java - Using Log4J 1.*, how can I write two packages to two separate files? -


i have following 2 packages:

com.mycorp.project.first
com.mycorp.project.second

i'd configure log4j (slf4j) write logs 1 package 1 file, , other package second file. not want them mixed in together.

to clear, 1 project/one process running.

i've tried filtering , loggers seem ignored log4j. both files identical.

edit: thank answers far, i've got , it's not working. both output files identical.

<configuration debug="true"> <contextname>dev</contextname>  <appender name="first_file" class="ch.qos.logback.core.rolling.rollingfileappender">     <file>a:/dev/logtesting/logs/first.log</file>     <filter class="ch.qos.logback.classic.filter.thresholdfilter">         <level>info</level>     </filter>     <rollingpolicy class="ch.qos.logback.core.rolling.timebasedrollingpolicy">         <filenamepattern>a:/dev/logtesting/logs/first.%d{yyyymmdd}%d{_hhmmss,aux}.log.gz</filenamepattern>     </rollingpolicy>     <encoder>         <pattern>%d{mmm dd hh:mm:ss.sss} [%thread] %-5level %logger{36} - %msg%n</pattern>     </encoder> </appender>  <appender name="second_file" class="ch.qos.logback.core.rolling.rollingfileappender">     <file>a:/dev/logtesting/logs/second.log</file>     <filter class="ch.qos.logback.classic.filter.thresholdfilter">         <level>info</level>     </filter>     <rollingpolicy class="ch.qos.logback.core.rolling.timebasedrollingpolicy">         <filenamepattern>a:/dev/logtesting/logs/second.%d{yyyymmdd}%d{_hhmmss,aux}.log.gz</filenamepattern>     </rollingpolicy>     <encoder>         <pattern>%d{mmm dd hh:mm:ss.sss} %property{hostname} [%thread] %level %logger{36} %msg%n</pattern>     </encoder> </appender>  <!-- =============================================================== --> <logger name="com.test.apples" additivity="false">     <level value="debug" />     <appender-ref ref="first_file"  /> </logger>  <logger name="com.test.oranges" additivity="false">     <level value="debug" />     <appender-ref ref="second_file"  /> </logger> <!-- =============================================================== -->  <category name="com.test.apples" additivity="false">     <priority value="debug"/>     <appender-ref ref="first_file"/> </category>  <category name="com.test.oranges" additivity="false">     <priority value="debug"/>     <appender-ref ref="second_file"/> </category>  <!-- =============================================================== -->  <!-- default --> <root level="warn">     <appender-ref ref="first_file" />     <appender-ref ref="second_file" /> </root> 

try example of properties file:

log4j.rootlogger=debug, console # each package has different appender name      log4j.logger.com.mycorp.project.first=debug, first log4j.logger.com.mycorp.project.second=debug, second  log4j.appender.first=org.apache.log4j.rollingfileappender log4j.appender.first.file=./first.log log4j.appender.first.layout=org.apache.log4j.patternlayout  log4j.appender.second=org.apache.log4j.rollingfileappender log4j.appender.second.file=./second.log log4j.appender.second.layout=org.apache.log4j.patternlayout 

or xml (only highlight important part):

<!-- first appender definition --> <appender name="first" class="org.apache.log4j.fileappender">     ... </appender>   <!-- second appender definition --> <appender name="second" class="org.apache.log4j.fileappender">     ... </appender>  <!-- logger package com.mycorp.project.first --> <logger name="com.mycorp.project.first">     <level value="debug" />     <appender-ref ref="first"/> </logger>  <!-- logger package com.mycorp.project.second --> <logger name="com.mycorp.project.second">     <level value="debug" />     <appender-ref ref="second"/> </logger> 

Comments

Popular posts from this blog

Change php variable from jquery value using ajax (same page) -

Pull out data related to my apps from Android Play Store and iOS App Store -

How can I fetch data from a web server in an android application? -