【发布时间】:2015-07-02 19:14:48
【问题描述】:
日志文件未在服务器上生成。 服务器显示:
log4j:WARN 找不到记录器的附加程序。 log4j:WARN 请正确初始化log4j系统。
我正在使用 log4j.xml :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ} |[%t]| %p | %c{1} | %m%n"/>
</layout>
</appender>
<appender name="file"
class="org.apache.log4j.RollingFileAppender">
<param name="file" value="../logs/logFile.log"/>
<param name="append" value="true"/>
<param name="maxFileSize" value="32MB" />
<param name="maxBackupIndex" value="10" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ} |[%t]| %p | %c{1} | %m%n"/>
</layout>
</appender>
<root>
<priority value="DEBUG"/>
<appender-ref ref="CONSOLE"/>
<appender-ref ref="file"/>
</root>
</log4j:configuration>
这是我对 log4j 的 servlet 初始化:
public class Log4jInitializer
implements ServletContextListener
{
public void contextDestroyed(ServletContextEvent arg0)
{}
/** Initialize log4j context */
public void contextInitialized(ServletContextEvent sce)
{
ServletContext context = sce.getServletContext();
String log4jFile = context.getInitParameter("log4jFilePath");
String fullPath = context.getRealPath("/") + log4jFile;
PropertyConfigurator.configure(fullPath);
Logger logger = LogManager.getLogger(Log4jInitializer.class.getName());
logger.debug("Log4J initialized successfully");
}
}
我的 web.xml 如下:
<context-param>
<description>log4J initializer</description>
<param-name>log4jFilePath</param-name>
<param-value>WEB-INF/log4j.xml</param-value>
</context-param>
<listener>
<listener-class>com.util.Log4jInitializer</listener-class>
</listener>
日志文件未在服务器上生成。我正在使用 tomcat 6 来部署我的应用程序。
谁能帮忙?
【问题讨论】:
-
有时候,你一定是看错了路径
-
文件在那里。它正在拾取文件,否则会显示 FileNotFoundException。另外,我添加了一个条件来检查文件是否存在,它显示为true。
-
不确定您的代码为什么不起作用。但是,有什么理由让你特别这样做吗?你为什么不:a)指定一个指向你的文件的“log4jConfiguration”上下文参数,或者b)只是命名你的文件log4j2.xml并将它保存在WEB-INF中(log4j会在那里找到它)?跨度>
标签: java servlets logging log4j