简体   繁体   中英

How to use log4j and log4j2 properies file to log into same file

I want to roll and compress log files based on size and time . I have found out that this can easily be performed with log4j2. The problem is many internal jars still use log4j for logging, which I want to be logged.

The possible solution I can think of here is by using log4j1.compatibility=true by keeping log4j.properties and log4j2.properties

What I can't figure out is how do I use RollingFileAppender in log4j.properties and log4j2 properties?

Please suggest me how can I use both the properties file(log4j and log4j2) to log to the same file with automatic compression when the specific size or time is reached.

Note: I tried using uk.org.simonsite.log4j.appender.TimeAndSizeRollingAppender but getting error NoClassDefError: org.apache.log4j.xml.unrecognizedelementhandler due to class is removed in log4j versions greater than v1.2.17.

Most libraries only use Log4j 1.x to log messages, they don't configure the logging system programmatically. Therefore you can simply replace log4j with log4j-1.2-api .

The Log4j 1.x bridge ( log4j-1.2-api ) shares its configuration with Log4j 2.x Core, so you can use a native Log4j 2.x configuration file to configure a RollingFileAppender . No log4j.properties file or log4j1.compatibility property required.

PS: Out of 4 configuration file formats supported by Log4j 2.x (cf. documentation ) the properties format is probably the more convoluted. Personally I would choose one of the remaining 3 (XML, JSON or YAML). The XML format does not require additional dependencies.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM