RRZE – Projekte & Prozesse (P&P)

Das Blog der RRZE Stabsstelle "Projekte & Prozesse"

Content

JBoss And JBoss ESB Color-coded Logging

Farbcodiertes Logging für JBoss und JBoss ESB

English Version

Sowohl während der Entwicklung als auch in einer Produktivumgebung können nach Prioritäten farbcodierte Logs sehr nützlich sein. Die folgenden Logging Konfiguration werden auf den von PP genutzten JBoss und JBoss ESB Systemen verwendet.

  1. Die Konfiguration des JBoss Loggings ist in der Datei $JBOSS_HOME/server/default/conf/jboss-log4j.xml definiert. Der Standard ConsoleAppender kann durch den ANSIConsoleAppender ersetzt werden. Die Declaration sieht folgendermaßen aus:
  2.    <!--<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">-->
       <appender name="CONSOLE" class="de.rrze.ppsa.log.ANSIConsoleAppender">
          <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
          <param name="Target" value="System.out"/>
          <param name="Threshold" value="INFO"/>
     
          <layout class="org.apache.log4j.PatternLayout">
             <!-- The default pattern: Date Priority [Category] Message\n -->
             <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
          </layout>
       </appender>

    Um ähnliche Farbcodierungen für den server.log zu erhalten, der ein anderes Farbschema benutzt, müssen die folgenden Änderungen vorgenommen werden:

       <!-- A time/date based rolling appender -->
       <appender name="FILE" class="org.jboss.logging.appender.DailyRollingFileAppender">
          <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
          <param name="File" value="${jboss.server.log.dir}/server.log"/>
          <param name="Append" value="false"/>
     
          <!-- Rollover at midnight each day -->
          <param name="DatePattern" value="'.'yyyy-MM-dd"/>
     
          <!-- Rollover at the top of each hour
          <param name="DatePattern" value="'.'yyyy-MM-dd-HH"/>
          -->
     
          <layout class="org.osuosl.logging.ANSIColorLayout">
             <!-- The default pattern: Date Priority [Category] Message\n -->
             <param name="ConversionPattern" value="%d %-5p [%c{1}] %m%n"/>
     
             <!-- The full pattern: Date MS Priority [Category] (Thread:NDC) Message\n
             <param name="ConversionPattern" value="%d %-5r %-5p [%c] (%t:%x) %m%n"/>
              -->
          </layout>
       </appender>
  3. Zuletzt muss ppsa-log4j-color-0.0.1.jar zum JBoss classpath hinzugefügt werden. Dies wird dadurch erreicht, dass man es in die $JBOSS_HOME/server/default/lib kopiert. Die Jar-Datei enthält sowohl den ANSIConsoleAppender als auch die ANSIColorLayout Klassen.
  4. Nicht vergessen, den Server danach neu zu starten.

Die vorgeschlagene Lösung basiert auf dem ANSIColorAppender, geschrieben von Dan Dyer und dem ANSIColorLayout von Peter Krenesky.

During development cycle or in a productive environment color-coded log messages based on their priority can prove pretty useful. The following logging configurations are deployed on the JBoss and JBoss ESB systems used by PP:

  1. The JBoss loggin configuration is defined in the $JBOSS_HOME/server/default/conf/jboss-log4j.xml file. The standard ConsoleAppender can be exchanged with the ANSIConsoleAppender. Declaration change looks like that:
  2.    <!--<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">-->
       <appender name="CONSOLE" class="de.rrze.ppsa.log.ANSIConsoleAppender">
          <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
          <param name="Target" value="System.out"/>
          <param name="Threshold" value="INFO"/>
     
          <layout class="org.apache.log4j.PatternLayout">
             <!-- The default pattern: Date Priority [Category] Message\n -->
             <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
          </layout>
       </appender>

    in order to get similar color-coding(this one uses different color scheme) for the server.log the following changes have to applied:

       <!-- A time/date based rolling appender -->
       <appender name="FILE" class="org.jboss.logging.appender.DailyRollingFileAppender">
          <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
          <param name="File" value="${jboss.server.log.dir}/server.log"/>
          <param name="Append" value="false"/>
     
          <!-- Rollover at midnight each day -->
          <param name="DatePattern" value="'.'yyyy-MM-dd"/>
     
          <!-- Rollover at the top of each hour
          <param name="DatePattern" value="'.'yyyy-MM-dd-HH"/>
          -->
     
          <layout class="org.osuosl.logging.ANSIColorLayout">
             <!-- The default pattern: Date Priority [Category] Message\n -->
             <param name="ConversionPattern" value="%d %-5p [%c{1}] %m%n"/>
     
             <!-- The full pattern: Date MS Priority [Category] (Thread:NDC) Message\n
             <param name="ConversionPattern" value="%d %-5r %-5p [%c] (%t:%x) %m%n"/>
              -->
          </layout>
       </appender>
  3. At last the ppsa-log4j-color-0.0.1.jar has to be added to the JBoss classpath. This can be achieved by copying it in the$JBOSS_HOME/server/default/lib. This jar file contains the ANSIConsoleAppender and the ANSIColorLayout classes.
  4. Do not forget to restart the server.

The proposed solution is based on the ANSIColorAppender written by Dan Dyer and the ANSIColorLayout provided by Peter Krenesky.

Inkscape und Datenschutz

English Version

Dank David Wessel (infeurope S.A.) wurden wir darauf hingewiesen, dass die svg-Dateien durchaus private Informationen enthalten.

Mir ist aufgefallen, dass in den jeweiligen SVG-Versionen der Dateien noch einige Pfadangaben enthalten sind, welche teilweise Rückschlüsse auf den Inhalt ihrer Dateiablage geben können.

Das sieht dann z.B. so aus:

inkscape:export-filename="C:\Users\dieDesignerin\RRZE\berlios_rrze_icons\tango\720x720\actions\add-participant.png"

Nicht schlimm, aber auch nicht schön.

Etwas Suchen via Google brachte mich auf einen Fehlerreport bei Ubuntu Privacy concern with export-filename and sodipodi:absref. Aha – das Problem ist also nicht nur bekannt, sondern es haben noch mehr! Wirklich spannend wird es dann, denn Sebastian Pipping schreibt in Kommentar 7, dass er das Programm “svgstrip” erstellt, um diese Informationen zu entfernen. Also runtergeladen und angewendet. Das Tool hatte noch ein Problem mit UTF-8 Zeichen in den Metadaten, aber Sebastian hat den Fehler binnen 3 Tagen – und wie bei Open Source Software so oft – unentgeldlich behoben. Vielen Dank dafür. Und nun klappt es auch mit den UTF-8 Zeichen.

Also Datenschutz wieder hergestellt. Version der Grafiken committed.

Dumm nur, dass man dies nach jeden erneuten Speichern mit Inkscape wiederholen muss. Es müsste eine Option geben, Inkscape diese Unart abzukonfigurieren. Aber daran arbeite ich noch. Genau wie an einer Anleitung, wie man die Metadaten unter Windows entfernt. Vielleicht?! 😉

Hier kommt erstmal die Schritt-für-Schritt-Anleitung unter Linux.
Voraussetzung ist, dass git, svn und python installiert sind, aber wer sich auf die Befehlszeile traut, bekommt das auch hin. O:-)

  1. Die aktuellste Version von svgstrip via git holen.
    git clone https://github.com/hartwork/svgstrip git/svgstrip
    (übrigens: ein git pull in dem neuen Verzeichnis hält die Version aktuell.)
  2. In das Verzeichnis mit den Icons wechseln – in meinem Fall das RRZE Icon Set.
    cd svn/rrze-icon-set/trunk
  3. Dann möchte ich alle svg-Dateien suchen und durch svgstrip bearbeiten lassen.
    for i in $(find . -name *.svg); do echo $i; ../../svgstrip/svgstrip --in-place $i; done;
  4. und dann das Ganze zurück ins subversion.
    svn ci

Fertig!

Danke an David Wessel und Sebastian Pipping!

 

*Update – 20.07.2015: URL zum git-Repository von svgstrip angepasst*

 

 

Inkscape and privacy

David Wessel (infeurope S.A.) was kind enough to inform us that svg files can, in fact, contain private information.

I noticed that svg versions of files still contain parts of the files’ paths, which allows inference of the original file system.

It looks like this:

inkscape:export-filename="C:\Users\dieDesignerin\RRZE\berlios_rrze_icons\tango\720x720\actions\add-participant.png"

Not too bad, but not very nice, either.

Some searching with Google led me to an error report for Ubuntu: Privacy concern with export-filename and sodipodi:absref. So not only is the problem already known, others are having it as well. Now it’s getting interesting, as Sebastian Pipping writes in commentary 7 that he wrote the program “svgstrip” to get rid of this information. I downloaded the program and ran it. The tool still had a problem with UTF-8 characters in the Metadata, but Sebastian fixed that bug within 3 days. And, like most of the time with Open Source Software, for free.And now, UTF-8 characters are no longer a problem.

Data security is once again intact. New versions of the graphics were committed.

On the down side, this needs to be repeated every time you save a file with Inkscape. There ought to be an option to configure what is saved in svg files. But I’m still working on that. I’m also working on instructions how to remove the metadata under Windows. Maybe?

For now, I give you a step by step instruction for Linux.
You need svn and python installed, but if you are confident to use the command line, you will manage that, too. O:-)

  1. Get an up to date version of svgstrip with git.
    git clone https://github.com/hartwork/svgstrip git/svgstrip
    (by the way: git pull in the new directory keeps the version up to date.)
  2. Change into your icon directory ? in my case that is the RRZE Icon Set.
    cd svn/rrze-icon-set/trunk
  3. Now I would like to search for all svg files and edit them with svgstrip.
    for i in $(find . -name *.svg); do echo $i; ../../svgstrip/svgstrip --in-place $i; done;
  4. and finally, send it all back into the subversion
    svn ci

Finished!

Thanks to David Wessel and Sebastian Pipping!

 

*Update – 20.07.2015: changed URL to the git repository of svgstrip*