Java Log4J动态创建日志文件
我已在每个进程运行时成功创建了日志。我现在遇到的问题是,任何被调用的包如果不是当前运行进程的子进程,就不会将其日志写入我的文件。例如,我创建了一个名为running-.log的新日志文件。正在运行的进程是com.me.foo在这个类中有一个对com.you中的方法的调用和对com.zee中的另一个方法的调用。我想让com.you和com.zee日志写入正在运行的-.log,而不是控制台日志。这并不像将getLogger()方法更改为com.me.foo的子方法那么简单。一些日志是从第三方JAR中写出的。我不知所措。如果您需要查看更多代码或其他信息,请告诉我。必须有另一种方法来处理这个问题 谢谢 动态创建日志文件的代码Java Log4J动态创建日志文件,java,logging,log4j,Java,Logging,Log4j,我已在每个进程运行时成功创建了日志。我现在遇到的问题是,任何被调用的包如果不是当前运行进程的子进程,就不会将其日志写入我的文件。例如,我创建了一个名为running-.log的新日志文件。正在运行的进程是com.me.foo在这个类中有一个对com.you中的方法的调用和对com.zee中的另一个方法的调用。我想让com.you和com.zee日志写入正在运行的-.log,而不是控制台日志。这并不像将getLogger()方法更改为com.me.foo的子方法那么简单。一些日志是从第三方JAR中
public void createLogInstance(String packaging,String appenderName, String logFileName){
Logger logger = Logger.getLogger(packaging);
Appender fileAppender = logger.getAppender(appenderName);
if(fileAppender != null){
logger.removeAppender(fileAppender);
}
//Create the root appender
ConsoleAppender console = new ConsoleAppender();
String pattern = ....;
console.setLayout(new PatternLayout(pattern));
console.setThreshold(Level.FATAL);
console.activateOptions();
logger.addAppender(console);
FileAppender fa = new FileAppender();
fa.setName(appenderName);
fa.setFile(logFileName);
fa.setLayout(new PatternLayout(..));
fa.setThreshold(Level.DEBUG);
fa.setAppend(true);
fa.activateOptions();
logger.setAdditivity(false);
logger.addAppender(fa);
}
com.zee日志
private static Logger logger = LoggerFactory.getLogger(Zee.class);
你登录了吗
private static Logger logger = LoggerFactory.getLogger(You.class);
我错过了根记录器。换了这条线
Logger logger = Logger.getLogger(packaging);
到
如果有人有更好的方法,请告诉我
Logger logger = Logger.getRootLogger();