繁体   English   中英

log4j 不创建日志文件

[英]log4j not creating log files

下面是我在项目中用来生成日志的 log4j.properties 文件。 但是日志没有在提到的位置生成。

log4j.rootLogger=DEBUG,file
#log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.org.apache.ibatis.MaxFileSize=15MB 
log4j.appender.org.apache.ibatis.MaxBackupIndex=10
log4j.appender.file.File=E:\logs\file.log
log4j.appender.file.DatePattern='.'yyyy-MM-dd
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%p] %d %c %M - %m%n

所以我接着写了一个示例jsp,如下所示,发现out.println(app.getClass());只返回了ConsoleAppenderout.println(app.getClass()); 当我在 Windows Server 2012 上的 TOMCAT 中部署代码时会发生这种情况。如果在 TOMCAT 上的 Windows Server 2008 上部署了相同的代码,日志会正确生成,并且会返回属性文件中提到的正确附加程序。 我尝试将日志位置放在 Tomcat 文件夹内外,但仍然没有运气。 我们使用的 log4j 版本是 1.2.17。

<%@page import="org.apache.log4j.*"%>
<%@page import="java.io.*"%>
<%@page import="java.lang.*"%>
<%@page import="java.util.*"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <%! static Logger logger = Logger.getLogger("sample_jsp");
 %>
        <%
          Enumeration e = Logger.getRootLogger().getAllAppenders();
    while ( e.hasMoreElements() ){
      Appender app = (Appender)e.nextElement();
      out.println(app.getClass());
     if ( app instanceof ConsoleAppender ){
    //out.println("File: " + ((ConsoleAppender)app).getFile());
  }
  }
        %>
    </body>
</html>

异常行为的原因可能是什么? 请帮忙

log4j.properties

# Root logger option
log4j.rootLogger=INFO,FILE,stdout
# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=automatio.out
log4j.appender.FILE.Append=true
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p 
%c{1}:%L - %m%n
log4j.appender.file.MaxFileSize=48
log4j.appender.file.MaxBackupIndex=9

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p 
%c{1}:%L - %m%n

在 Baseclass.java 中

    public void init() throws IOException 
    {
      String log4jConfPath="log4j.properties";
      PropertyConfigurator.configure(log4jConfPath);
    }

   public void log(String data) 
   {
      log.info(data);
      Reporter.log(data);   
   }

检查应用程序启动日志。

在我的案例中,项目作为 WAR 文件部署到 tomcat,项目有 2 个 SLF4J 实现,“log4j”和“logback”。 在应用程序部署中,catalina.out 有这条消息“SLF4J:类路径包含多个 SLF4J 绑定......”。 通过 pom 中的依赖项排除以及在该文件由日志创建和填充之后删除了 logback。

请参阅此链接https://www.baeldung.com/slf4j-classpath-multiple-bindings

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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