2016-07-09 9 views
0

私は自分のログファイルをより読みやすくしようとするので、すべてのアプリケーションを実行した後にログファイル内のレコードを空行で区切りたい。私はlog4jを使用します。ログファイルのレコードを空白行で区切る方法は? Log4j

最も簡単な方法は、%m%nをコード内の1つのレコードに追加することです。しかし、私は設定ファイルを使ってそれを行うことに興味があります。

質問があるので、設定ファイルlog4j.xmlに追加する必要がありますか?ここで

は私のlog4j.xml設定ファイルのコンテキストである:

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
<log4j:configuration debug="true" 
     > 


    <appender name="file" class="org.apache.log4j.RollingFileAppender"> 
     <param name="append" value="true"/> 
     <param name="maxFileSize" value="10MB"/> 
     <param name="maxBackupIndex" value="10"/> 
     <param name="file" value="logs/logs.log"/> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" 
        value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"/> 
     </layout> 
    </appender> 

    <root> 
     <level value="DEBUG"/> 
     <appender-ref ref="file"/> 
    </root> 

</log4j:configuration> 
+0

http://stackoverflow.com/questions/1806378/log4j-not-adding-newlines-between-logfile-entries – Wilson

答えて

1

ConversionPattern%nのみを含む)以外の同じ設定を使用する、構成で定義された別のLoggerを使用することができます。あなたのアプリの起動時に、次に

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
<log4j:configuration debug="true"> 

    <appender name="file" class="org.apache.log4j.RollingFileAppender"> 
     <param name="append" value="true"/> 
     <param name="maxFileSize" value="10MB"/> 
     <param name="maxBackupIndex" value="10"/> 
     <param name="file" value="logs/logs.log"/> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" 
        value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"/> 
     </layout> 
    </appender> 

    <appender name="file2" class="org.apache.log4j.RollingFileAppender"> 
     <param name="append" value="true"/> 
     <param name="maxFileSize" value="10MB"/> 
     <param name="maxBackupIndex" value="10"/> 
     <param name="file" value="logs/logs.log"/> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%n"/> 
     </layout> 
    </appender> 

    <logger name="com.company.MyClass"> 
     <level value="DEBUG"/> 
     <appender-ref ref="file2"/> 
    </logger> 

    <root> 
     <level value="DEBUG"/> 
     <appender-ref ref="file"/> 
    </root> 

</log4j:configuration> 

:ここでは一例である

Logger logger = Logger.getLogger(com.company.MyClass.class); 
logger.info(" "); 
+0

ありがとうございました! – antongarakh

0

ちょうど私はあなたがなぜ達成したいのか理解してわからないんだけど、あなたは、各ログエントリの間に空白行をしたい場合、あなたあなたのConversionPatternの末尾に余分な%nを追加する必要があります。

<param name="ConversionPattern" 
       value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n%n"/> 

%nは "改行" を意味します)

+0

私は実際には、異なるアプリケーション実行のログの間に空白行を入れたい。あなたが私に勧めたことは、私が必要とするものではありません。しかし、ありがとう – antongarakh

+0

ああ、ごめんなさい。あなたは私がちょうどした他の答えを見たいかもしれません:) – xav

関連する問題