您可以使用来做自己想做的事情
RoutingAppender。这是一些示例代码:
package example;import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;public class SomeClass { private static final Logger log = LogManager.getLogger(); public static void main(String[] args){ System.setProperty("myProperty", "myFile.log"); if(log.isDebugEnabled()) log.debug("This is some debug!"); log.info("Here's some info!"); log.error("Some erorr happened!"); }}这是log4j2.xml:
<?xml version="1.0" encoding="UTF-8"?><Configuration status="WARN"> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> </Console> <Routing name="Routing"> <Routes pattern="$${sys:myProperty}"> <Route> <File name="File" fileName="logs/${sys:myProperty}" immediateFlush="false" append="false"> <PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> </File> </Route> </Routes> </Routing> </Appenders> <Loggers> <Root level="debug"> <AppenderRef ref="Console" level="debug" /> <AppenderRef ref="Routing" level="debug" /> </Root> </Loggers></Configuration>运行上面的Java代码,在当前工作目录内的日志文件夹中创建一个名为myFile.log的文件。日志文件的内容如下所示:
2018-05-21 22:13:29.147 [main] DEBUG example.SomeClass - This is some debug!2018-05-21 22:13:29.160 [main] INFO example.SomeClass - Here's some info!2018-05-21 22:13:29.161 [main] ERROR example.SomeClass - Some erorr happened!



