Donnerstag, 26. August 2010

log in a static method in Grails domain class

This post is in english, I guess it might help some people

I've been struggling with this issue some time. I found some hints via Google, especially a thread in Pubbs and one in Nabble. Both didn't help, though.

I don't know if what I did is good, or even "legal" or the Groovy way or... whatever, it works, though. Here on Grails 1.1.1 at least.

Here's the code:
def log = (new MyDomainClass()).log
It's so easy. I just instantiate a new object of the type of the current domain class and get its log property. That downsize is, it can't be copy-pasted to any domain class without editing it. Don't know if there's a solution to that.
For those who want a more talkative example:
class MyDomainClass{
static myStaticMethod () {
def log = (new MyDomainClass()).log
log.debug "This is a log message from a static domain method"
}
}
Did this help? Let me know in the comments.

Mittwoch, 18. August 2010

Probleme mit der MSVCP71.DLL

Letztens hatte ich Probleme, weil eine Fehlermeldung in meinem Windows XP kam. Nach der Lösung des Problems habe ich einen Kumpel das Problem per Email erörtert. Allerdings dachte ich mir jetzt, das wäre vielleicht auch für die Allgemeinheit interessant! Hier also ein ein bisschen bearbeitetes copy-paste der Email:

Seit einigen Tagen trat bei mir folgende Fehlermeldung auf.

Aus meiner Sicht "unerwartet". Also, ich hab mich nicht zu sehr damit befasst und natürlich mehrere Programme am laufen. Keine Aktion hatte ich kurz davor ausgeführt, so war es schwierig den Fehler zu reproduzieren. Vor allem hatte ich kein Programm gestartet was zu dieser Fehlermeldung führen könnte.

Heute hab ich mir Visio Professional 2010 von MSDNAA runtergeladen (für die DA). Wenn das Setup beendet wurde und, Achtung, man etwas gewartet hat, vielleicht so 1-10 Sekunden, kam eben diese Fehlermeldung (deshalb auch die Setup Exe-Datei in der Titelzeile).

Man merke sich:
* Beim beenden des Setups
* Nach kurzer Zeit, nicht sofort

Einiges an googlen hab ich die wohl kompetenteste Antwort in einem Forum von Microsoft gefunden.

Tja, eine DLL aus dem Internet wollte ich nicht unbedingt runter laden (Virengefahr), vor allem weil nirgendwo die eigentliche Größe der DLL angegeben wurde (übrigens 499.721 Byte). Also hab ich in meinen Gemeinsamen Dateien unter Programme gesucht und tatsächlich zwei DLLs gefunden. Beide hatten sogar die gleiche Größe. Also hab ich mir das mit dem regsvr32 angeschaut, was aber zu einer Fehlermeldung geführt hat, dass der blablabla Einstiegspunkt nicht gefunden wurde. Dann hab ich den Dateinamen mit Groß- und Kleinschreibung so geschrieben wie die Datei war, auch ne Fehlermeldung. Das sei keine richtige DLL bzw OCX Datei. *shrug*
Also hab ich mal den Filemon.exe von SysInternals angeworfen. Und die Lösung ist so einfach:

Kopiere die MSVCP71.DLL in das Verzeichnis Windows\System32

Es werden nämlich alle Verzeichnisse im PATH nach der Datei durchsucht. regsvr32 ist nicht nötig.

Aber Vorsicht, ich habe mit dem TotalCommander die MSVCP71.DLL in das Windows\System32 Verzeichnis kopiert und Sophos Anti-Virus hat daraufhin meine totalcmd.exe in Quarantäne verschoben. *autsch*
Also aufpassen :)