Praveen
Praveen

Reputation: 1851

Can log4j and java util logging coexist

My application uses log4j but OkHttpClient uses java util logging. So apart from log4j.properties, I created a logging.properties file with the following contents:

handlers=java.util.logging.FileHandler

.level=FINE

okhttp3.internal.http2.level=FINE

java.util.logging.FileHandler.pattern = logs/%hjava%u.log

java.util.logging.FileHandler.limit = 50000

java.util.logging.FileHandler.count = 1

java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter

java.util.logging.ConsoleHandler.level = FINE

java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

I then added this to jvm params used for starting the application -Djava.util.logging.config.file="file://${BASE_DIR}/logging.properties"

But I don't see any new folders being created as indicated by the Filehandler. Any one know why?

Upvotes: 0

Views: 739

Answers (1)

jmehrens
jmehrens

Reputation: 11045

But I don't see any new folders being created as indicated by the Filehandler. Any one know why?

The FileHandler will not create any new folders. A directory must be created before the FileHandler will create a file.

The system property requires a path to file that is located on the filesystem It will not expand system properties or environment variables by using the dollar sign syntax.

You can use a relative path based off of the working directory or you have to use an absolute path to the logging.properties. The logging properties can not be packaged inside of an archive.

If you want to work around this limitation then you want to create a custom config class and use the java.util.logging.config.class property in conjunction with the java.util.logging.config.file property. You then write a class that reads the file://${BASE_DIR}/logging.properties and performs the needed transformation into a path to a file. Then update the configuration if you are using JDK9 or newer. On older versions you need to use readConfiguration and add code to work work around limitations of the LogManager

Upvotes: 1

Related Questions