Where is the log4j XML config reference?

When it comes to logging in Java™ there is no shortage of alternatives. The one I’ve used the most is log4j by the Apache Foundation. In its basic usage it has no dependencies and you only need to add the ones you’ll use like SMTP support for mailing loggers, JSON configuration support or a JDBC connector to log to your favorite database. The newest version even allows asynchronous logging through the LMAX Distruptor interthread messaging API that promises greater throughput than concurrent queues and lock based thread synchronization.

Since the 2.x version came out, however, the documentation for the 1.x versions has become fragmented. There are dead links everywhere and the XML configuration method reference is not even half complete. A common question about the XML format is about validation. A more thorough search can land you on the source control version of the DTD. Let’s go through the details of what makes a valid log4j XML configuration file.

Continue reading

Programming, Uncategorized

Zero padded hexadecimal numbers in Java

A quick recipe, converting an int or long like 65 to a string like 000041. It’s useful for converting integer RGB colors to the common #FFBBCC kind of web encoded colors.




Decoding Base64 without newlines

So, I was trying to decode some base 64 encoded data to verify a request’s details but openssl kept returning nothing. To see what it expected I encoded a random string and when I saw the output it dawned on me. Base 64 wraps lines of a certain length with new line characters, every 64 characters (bytes, actually).

Wrapping data isn’t that hard, but I suspected there had to be a command that already did something like that. The answer was fold. It wraps lines of input to fit a specified width. The default was 80, but it can be changed with the -w switch. The result is:

 input | fold -w 64 | openssl base64 -d | output