为什么 log4j 在我的 Java 应用程序中而不是在我的 Web 应用程序中创建日志文件?
Why does log4j create the logfile in my Java application but not in my web application?
我测试过这个配置
# Define the root logger with appender file
log4j.rootLogger = DEBUG, CONSOLE, FILE
# CONSOLE appender
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.conversionPattern=%m%n
log4j.appender.CONSOLE.Threshold=debug
# FILE appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n
# Set the name of the file
log4j.appender.FILE.File=/home/user/annotator-log.out
# Set the immediate flush to true (default)
log4j.appender.FILE.ImmediateFlush=true
# Set the threshold to debug mode
log4j.appender.FILE.Threshold=info
# Set the append to false, overwrite
log4j.appender.FILE.Append=false
使用这个简单的 Main.java
package playground;
import org.apache.log4j.Logger;
public class Main {
private final static Logger LOGGER = Logger.getLogger(Main.class.getName());
public static void main(String[] args) {
LOGGER.info("Running main ..");
LOGGER.debug("Reading args:");
for (String arg : args) {
LOGGER.debug(" " + arg);
}
LOGGER.info("All done.");
}
}
并且有效。日志记录被打印到控制台,文件被创建在 /home/user/annotator-log.out
但是,如果我将 .properties
文件放入我的 Web 应用程序中,我只能在控制台中看到输出,但不会创建日志文件。
这可能是什么原因?
尝试将其放入您的 web.xml。
<context-param>
<param-name>log4j-config-location</param-name>
<param-value>WEB-INF/log4j.properties</param-value>
</context-param>
程序化解决方案:
String log4jPropertiesFilePath = ...;
org.apache.log4j.PropertyConfigurator.configure(log4jPropertiesFilePath);
当我们只能在运行时知道文件位置时,我们使用它!
我测试过这个配置
# Define the root logger with appender file
log4j.rootLogger = DEBUG, CONSOLE, FILE
# CONSOLE appender
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.conversionPattern=%m%n
log4j.appender.CONSOLE.Threshold=debug
# FILE appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n
# Set the name of the file
log4j.appender.FILE.File=/home/user/annotator-log.out
# Set the immediate flush to true (default)
log4j.appender.FILE.ImmediateFlush=true
# Set the threshold to debug mode
log4j.appender.FILE.Threshold=info
# Set the append to false, overwrite
log4j.appender.FILE.Append=false
使用这个简单的 Main.java
package playground;
import org.apache.log4j.Logger;
public class Main {
private final static Logger LOGGER = Logger.getLogger(Main.class.getName());
public static void main(String[] args) {
LOGGER.info("Running main ..");
LOGGER.debug("Reading args:");
for (String arg : args) {
LOGGER.debug(" " + arg);
}
LOGGER.info("All done.");
}
}
并且有效。日志记录被打印到控制台,文件被创建在 /home/user/annotator-log.out
但是,如果我将 .properties
文件放入我的 Web 应用程序中,我只能在控制台中看到输出,但不会创建日志文件。
这可能是什么原因?
尝试将其放入您的 web.xml。
<context-param>
<param-name>log4j-config-location</param-name>
<param-value>WEB-INF/log4j.properties</param-value>
</context-param>
程序化解决方案:
String log4jPropertiesFilePath = ...;
org.apache.log4j.PropertyConfigurator.configure(log4jPropertiesFilePath);
当我们只能在运行时知道文件位置时,我们使用它!