Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Log4j 2 doesn't support log4j.properties file anymore?

Tags:

java

log4j

log4j2

I am running an example using log4j 2.0-rc1 and log4j.properties file, but log4j lib always runs it with the default configuration (log level, appender, etc). I also tried changing the name to log4j2.properties and nothing happened.

like image 425
emanuell Avatar asked Mar 18 '14 16:03

emanuell


People also ask

Will Log4j properties work with log4j2?

Log4j 2 doesn't support the Log4j v1 ". properties" format anymore (yet, since v2. 4, Log4j supports a Property format, but its syntax is totally different from v1 format).

Is Log4j 2 backwards compatible?

Log4j 2 is not backwards compatible with 1.

Does Apache 2.0 use Log4j?

Apache Log4j 2 is an upgrade to Log4j that provides significant improvements over its predecessor, Log4j 1.

Can I replace Log4j with log4j2?

You may be able to convert an application to Log4j 2 without any code changes by replacing the Log4j 1. x jar file with Log4j 2's log4j-1.2-api.


2 Answers

Log4j 2 doesn't support the Log4j v1 ".properties" format anymore (yet, since v2.4, Log4j supports a Property format, but its syntax is totally different from v1 format). New formats are XML, JSON, and YAML, see the documentation (note: if you used one of these formats in a file called ".properties", it may be confusing).

To specify the location of your configuration file, do you use the system property log4j.configurationFile, the Log4j class ConfigurationFactory, or something else? Did you read this manual page? It explains that: Although the Log4j 2 configuration syntax is different than that of Log4j 1.x, most, if not all, of the same functionality is available.

So it seems that a legacy Log4j1.x log4j.propertiesfile is not supported as is, it must be migrated to v2.x format. The migration seems quite easy though, looking at the example in the link I gave above. Here is an extract:

Example of Log4j v1.x config file:

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd"> <log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>     <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">         <layout class="org.apache.log4j.PatternLayout">             <param name="ConversionPattern" value="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>         </layout>     </appender>     <category name="org.apache.log4j.xml">         <priority value="info" />     </category>     <Root>         <priority value ="debug" />         <appender-ref ref="STDOUT" />     </Root> </log4j:configuration> 

Same config file migrated to Log4j v2:

<?xml version="1.0" encoding="UTF-8"?> <Configuration>     <Appenders>         <Console name="STDOUT" target="SYSTEM_OUT">             <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>         </Console>     </Appenders>     <Loggers>     <Logger name="org.apache.log4j.xml" level="info"/>         <Root level="debug">             <AppenderRef ref="STDOUT"/>         </Root>     </Loggers> </Configuration> 
like image 54
xav Avatar answered Sep 22 '22 17:09

xav


As of version 2.4, Log4J2 does now, again, support .property files. See here in the documentation for property configuration.

Configuration with Properties

As of version 2.4, Log4j now supports configuration via properties files. Note that the property syntax is NOT the same as the syntax used in Log4j 1. Like the XML and JSON configurations, properties configurations define the configuration in terms of plugins and attributes to the plugins.

like image 38
Jack Hughes Avatar answered Sep 24 '22 17:09

Jack Hughes