java - Best way to modify log4j appended for logging -


i'm developing big(functional wise) rest web service , want capture logs good, can have insight of going on where. use log4j logging, using appended setting :

<!-- appenders --> <appender name="console" class="org.apache.log4j.consoleappender">     <param name="target" value="system.out" />     <layout class="org.apache.log4j.patternlayout">         <param name="conversionpattern" value="%-5p: %c - %m%n" />     </layout> </appender> 

which produces these kind of logs :

10:44:55,893 info  [stdout] info : my.package.myclass - i'm class message 
  1. how can make message i.e.

    10:44:55,893 info : my.package.myclass - i'm class message 
  2. can make special appender or whatever is, , use in classes not in all, i.e. want have in few of logs :

    • payload: request parameters
    • response: response service returns
    • extra data : data

without having these info [stdout] info my.package.myclass in front of it

update

i forgot mention in question i'm using jboss 5. think jboss might adding 10:44:55,893 info [stdout] format put in log4j config.

bounty update

i changed :

<!-- ============================== -->    <!-- append messages console -->    <!-- ============================== -->     <appender name="console" class="org.apache.log4j.consoleappender">       <errorhandler class="org.jboss.logging.util.onlyonceerrorhandler"/>       <param name="target" value="system.out"/>       <param name="threshold" value="info"/>        <layout class="org.apache.log4j.patternlayout">          <!-- default pattern: date priority [category] message\n -->          <param name="conversionpattern" value="%d{absolute} %-5p [%c{1}] %m%n"/>       </layout>    </appender> 

to this:

<!-- ============================== -->    <!-- append messages console -->    <!-- ============================== -->         <appender name="console" class="org.apache.log4j.consoleappender">           <errorhandler class="org.jboss.logging.util.onlyonceerrorhandler"/>           <param name="target" value="system.out"/>           <param name="threshold" value="info"/>            <layout class="org.apache.log4j.patternlayout">              <!-- default pattern: date priority [category] message\n -->              <param name="conversionpattern" value="%m%n"/>           </layout>        </appender> 

and worked, seems kind of ugly this. there other way? i'm using spring mvc/jboss combination.

i'm getting nice clean messages :

10:44:55,893 info : my.package.myclass - i'm class message 

without annoying

10:44:55,893 info  [stdout] 

prefix

question 1:

use following pattern layout appender:

<param name="conversionpattern" value="%d{absolute} %-5p: %c - %m%n" /> 

the conversion pattern in configuration file stated not result in kind of log stated. example date/time not included in conversion pattern.


question 2:

you can use special logger uses appender logging pure message.

your configuration example following:

<?xml version="1.0" encoding="utf-8" ?> <!doctype log4j:configuration system "log4j.dtd">  <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">      <appender name="consoleappender" class="org.apache.log4j.consoleappender">         <param name="target" value="system.out" />         <layout class="org.apache.log4j.patternlayout">             <param name="conversionpattern" value="%m%n" />         </layout>     </appender>      <appender name="consoleappender2" class="org.apache.log4j.consoleappender">         <param name="target" value="system.out" />         <layout class="org.apache.log4j.patternlayout">             <param name="conversionpattern" value="%d{absolute} %-5p: %c - %m%n" />         </layout>     </appender>      <logger name="speciallogger" additivity="false">         <level value="info" />         <appender-ref ref="consoleappender" />     </logger>      <root>         <priority value="info" />         <appender-ref ref="consoleappender2" />     </root>  </log4j:configuration> 

you use speciallogger pure messages without additional information. can used in multiple classes.

in configuration of speciallogger, additivity = "false" needed, because otherwise appender consoleappender2 of root logger log same message. (the message logged 2 times in case.)

your code example this:

public class testclassa {     private static logger speciallogger = logger.getlogger("speciallogger");     private static logger logger = logger.getlogger(testclassa.class);          public testclassa() {      }      public void dosomething() {         logger.info("some message testclassa");         speciallogger.info("some message via speciallogger testclassa");     } } 

calling dosomething results in:

17:17:18,125 info : com.foo.testclassa - message testclassa message via speciallogger testclassa 

somewhere in main class need configure log4j usual, e.g.:

domconfigurator.configureandwatch("log4j.xml", 60 * 1000); 

Comments

Popular posts from this blog

c# - SharpSVN - How to get the previous revision? -

c++ - Is it possible to compile a VST on linux? -

url - Querystring manipulation of email Address in PHP -