bugfix> java > 投稿

以下は、ログを生成するプロジェクトで使用した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を作成し、 ConsoleAppender のみを見つけました。クラスは out.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>

異常な動作の原因は何ですか?助けてください

回答 1 件
  • 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);   
       }
    
    

あなたの答え