2016-12-09 3 views
0

Вот мой log4j.xmlLog4j регистрации два раза в файле журнала

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 
     <appender name="mylog" class="org.apache.log4j.DailyRollingFileAppender"> 
     <param name="File" value="myLogfile.log" /> 
     <param name="DatePattern" value="'.'yyyy-MM-dd" /> 
     <param name="append" value="true"/> 
     <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="console" class="org.apache.log4j.ConsoleAppender"> 
     <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> 
     <logger name="com.mypackage1"> 
     <level value="DEBUG" /> 
     <appender-ref ref="mylog" /> 
     <appender-ref ref="console" /> 
    </logger> 

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

</log4j:configuration> 

в myLogfile.log файле я получаю вырубку из «com.mypackage1» в два раза.

Пожалуйста, помогите ставить с проблемой

+1

Возможно, потому, что вы многократно копируете вставки. Возможно, потому, что вы многократно копируете файлы. Возможно, потому, что вы многократно копируете файлы. – Pat

+0

Спасибо, что уведомил мою ошибку. Это был мой первый пост. в любом случае я отредактировал его. – Unnikrishnan

+0

Попробуйте удалить

ответ

-1

Если вы Перенаправление вывода на консоль в тот же файл журнала из оболочки, как вы упомянули в комментарии, то да, файл журнала будет иметь повторяющиеся записи. Одним из решений было бы использовать ниже config log4j в вашей программе и перенаправить вывод консоли в другой файл - например. console.out, который будет иметь ваши журналы и выходы отдельно. Если вы должны иметь std в том же файле, то перенаправление std в тот же файл.

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 
     <appender name="mylog" class="org.apache.log4j.DailyRollingFileAppender"> 
     <param name="File" value="myLogfile.log" /> 
     <param name="DatePattern" value="'.'yyyy-MM-dd" /> 
     <param name="append" value="true"/> 
     <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="console" class="org.apache.log4j.ConsoleAppender"> 
     <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> 

    <logger name="com.mypackage1"> 
     <level value="DEBUG" /> 
     <appender-ref ref="mylog" /> 
    <!-- <appender-ref ref="console" /> -->  
    </logger> 

    <root> 
     <level value="DEBUG" /> 
    <!-- <appender-ref ref="console" /> --> 
      <appender-ref ref="myLog" /> 
    </root> 

</log4j:configuration> 
+0

Приложение 'console' не будет вызывать повторяющиеся записи в файле' myLogfile.log', написанном приложением 'mylog'. – Andreas

+0

Да, мой плохой. Я неправильно понял вопрос, я думал, что дубликаты записей были на консоли. Для дубликатов в файле этот log4j не будет делать этого. Тем не менее, я подозреваю, что это может быть способ, которым могла быть выполнена программа - например. запущен из оболочки и вывода, перенаправленного в файл, возможно? Думаю, это может привести к дублированию файла. Я отредактировал свой ответ, чтобы отразить это. – Pat

+0

Да, моя программа запущена из оболочки, но есть ли способ исправить это. – Unnikrishnan