This blog has moved to
http://blog.matthias-reining.com

Die bestehenden Artikel bleiben vorerst alle bei blogspot. Neue Artikel veröffentliche ich allerdings nur noch auf http://blog.matthias-reining.com

Donnerstag, 25. September 2008

Blog-Eintrag aus Microsoft Word erstellen und bearbeiten

Bin mal gespannt ob das wirklich so einfach geht…

Nachdem das schreiben in dem HTML Editor bzw. direkt in HTML bei google Blogger zwar ok ist, Word allerdings beim Schreiben von Text einfach unschlagbar ist, probier ich mal aus ob das wirklich alles so funktioniert (mit Microsoft Word 2007).

Nach der ersten Neuanlage mit anschließender Bearbeitung: tolle Sache!

Anschließend noch etwas Finetuning um Source Code schön strukturiert anzuzeigen….

Mit der Word Formatvorlage "HTML Vorformatiert" geht dann auch das Einrücken mit Space/ Leerzeichen. Dies wird übersetzt in den HTML-Tag <code>.

Zeile 1
zwei Space eingeruckt
6x Leerzeichen

Damit der Sourcecode nicht in Orange dargestellt wird, habe ich die entsprechende CSS Klasse noch in google Blogger angepasst. Fertig.

Mittwoch, 24. September 2008

Java Logging

Über Logging in Java ist bereits viel geschrieben worden. Das wieso-weshalb-warum erspar ich mir deshalb an dieser Stelle. Im Folgenden eine kurze Einführung wie man in Java loggen kann.

Um die Implementierungen des Loggers später austauschen zu können und um eine Abstraktionsschicht fürs Logging zu integrieren bietet sich die Commons Logging API der Apache Software Foundation an (http://commons.apache.org/logging).

Der Einsatz ist ganz einfach und eigentlich ziemlich ähnlich zu der direkten Implementierung von log4j (http://logging.apache.org/log4j)

package com.mre678.blog.jconsole;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class LoadBuilder {

private static final Log logger = LogFactory.getLog(LoadBuilder.class);

/**
* Load duration in minutes.
*/
private static final short LOAD_DURATION = 60;

public static void main(String... args) {

long startLoad = System.currentTimeMillis();
long endLoad = startLoad + (LOAD_DURATION * 60L * 1000L);

long loops = 0;

if (logger.isInfoEnabled())
logger.info("Starts load builder " + startLoad + "; end " + endLoad);

while (System.currentTimeMillis() < endLoad) {
loops++;
if (logger.isDebugEnabled()) logger.debug("Debug Message");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
logger.error(e);
}
}
if (logger.isInfoEnabled()) logger.info(loops + " loops was executed.");
}
}



Die konkrete Implementierung wird im File commons-logging.properties konfiguriert. Hier beispielsweise log4j.

org.apache.commons.logging.Log = org.apache.commons.logging.impl.Log4JLogger


In diesem kleinen Stand-Alone Beispielprogramm wird 60 Minuten lang jede Sekunde eine log Info Meldung ausgegeben.

Änderung des Loglevels zur Laufzeit

Wäre toll wenn man das Loglevel der Applikation zur Laufzeit ändern kann... Klar geht ganz einfach indem man einfach den Inhalt von log4j.xml während das Java Programm läuft anpasst. Hierzu muss natürlich die log4j Konfiguration mit DOMConfigurator.configureAndWatch eingelesen worden sein (http://logging.apache.org/log4j/1.2/apidocs/index.html?org/apache/log4j/xml/DOMConfigurator.html). Ist aber ja irgendwie uncool. Wäre mit der jconsole von bspw. einem entfernten Rechner schon etwas schicker. Hierzu gibt es bspw. von log4j den JMX Support. Allerdings funktioniert dieser ohne Zutun bei Stand-Alone Applikationen nicht (falls doch würde ich mich über einen kleinen Hinweis freuen ;-); das gleiche gilt auch für den Tomcat, im JBoss dagegen funktioniert dies. Hintergrund dafür ist, das der VM bei dem obigen Beispiel kein MBean (Managed Bean) bekannt ist.

MBean schreiben und registrieren: auch doof...

Wenn man nun die Log Implementierung austauscht auf bspw. Jdk14Logger, der Log-Implementierung von Java.

Austauchen geht ganz einfach: Änderung der commons-logging.properties

org.apache.commons.logging.Log = org.apache.commons.logging.impl.Jdk14Logger

Mit dieser Implementierung kann nun bspw. mit der jconsole direkt das Loglevel zur Laufzeit geändert werden. Doch Achtung: die Loglevel bei java.util.logging lauten anders als bei log4j (siehe http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/Level.html).

Nachdem ich log4j gegenüber java.util.logging bevorzuge ist dies natürlich auch keine wirkliche Alternative. Aber: funzt!

Sonntag, 14. September 2008

Mein erster Blogeintrag

Mein erster Blogeintrag...

Nach ein klein wenig googlen und ein paar interessanten (allerdings meist veralteten) Artikeln hab ich mich dazu entschieden hier ein Blog einzurichten.

Auf bspw. der Seite http://sw-guide.de/webdienste-blogging/wie-starte-ich-ein-blog-und-mache-dieses-bekannt/ konnte ich mich erstmal ein bischen allg. über das Bloggen bzw. das Blogschreiben informieren. Nachdem ich jetzt sehe wie easy das ganze hier ist, bin ich fast froh, dass ich mich, für die ersten Gehversuche, nicht gleich am Selberhosten versucht habe (technisch zwar bestimmt interessant, allerdings hätte es dann vermutlich bis zum ersten Eintrag noch etwas gedauert).