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.
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).
Log4j 2 is not backwards compatible with 1.
Apache Log4j 2 is an upgrade to Log4j that provides significant improvements over its predecessor, Log4j 1.
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.
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.properties
file 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>
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With