log4j配置文件和日志级别分离


log4j配置文件基本含义说明
log4j.properties配置文件讲解如下:
#log4j中有五级logger
#FATAL 0
#ERROR 3
#WARN 4
#INFO 6
#DEBUG 7

配置根Logger,其语法为:
log4j.rootLogger = [ level ] , appenderName, appenderName, ...

level 是日志记录的优先级
appenderName就是指定日志信息输出到哪个地方,可以同时指定多个输出目的地。

配置日志信息输出目的地Appender,其语法为:
log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
...
log4j.appender.appenderName.option = valueN

Log4j提供的appender有以下几种:
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

配置日志信息的格式(布局),其语法为:
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1 = value1
....
log4j.appender.appenderName.layout.option = valueN

Log4j提供的layout有以下几种:
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

例子1:
#log4j.rootLogger = [ level ] , appenderName, appenderName, …
log4j.rootLogger=INFO, A1 ,R
#这一句设置以为着所有的log都输出
#如果为log4j.rootLogger=WARN, 则意味着只有WARN,ERROR,FATAL被输出,DEBUG,INFO将被屏蔽掉.
# A1 is set to be a ConsoleAppender.
#log4j中Appender有几层如控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等
#ConsoleAppender输出到控制台
log4j.appender.A1=org.apache.log4j.ConsoleAppender

# A1 使用的输出布局
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
#灵活定义输出格式 具体查看log4j javadoc org.apache.log4j.PatternLayout
#d 时间 ....
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n

#R 输出到文件 RollingFileAppender的扩展,可以提供一种日志的备份功能。
log4j.appender.R=org.apache.log4j.RollingFileAppender
#日志文件的名称
log4j.appender.R.File=log4j.log
#日志文件的大小
log4j.appender.R.MaxFileSize=100KB
# 保存一个备份文件
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.TTCCLayout
log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n

例子2 :
# log4j.properties
# Set root category priority to DEBUG and its only appender to A1.
# 设置com.ccit域对应的级别DEBUG和输出地A1,A2
log4j.category.com.ccit=DEBUG,A1,A2

log4j.appender.A2=org.apache.log4j.ConsoleAppender
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.Encoding=ISO-8859-1
log4j.appender.A2.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n


log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.DatePattern='.'yyyy-MM-dd
log4j.appender.A1.Encoding=ISO-8859-1
log4j.appender.A1.File=log/server.log
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d %5p [%t] (%F:%L) - %m%n

java文件中初始化log4j配置:

String dir = System.getProperty("user.dir"); // 获得当前程序所在路径
System.out.println("log4j = " + dir + "/conf/log4j.properties");

// 初始化log4j    org.apache.log4j.PropertyConfigurator
PropertyConfigurator.configure("./conf/log4j.properties");


读取配置文件的三种方法:
//自动快速地使用缺省Log4j环境。
BasicConfigurator.configure ();
//读取使用Java的特性文件编写的配置文件
PropertyConfigurator.configure ( String configFilename);
//读取XML形式的配置文件
DOMConfigurator.configure ( String filename );

日志级别分离

一、        Tomcat日志分离

修改war包中的log4j.properties文件

增加红色字体的配置信息(两处修改):

# Set root category priority to DEBUG and its only appender to A1.

#log4j.rootCategory=DEBUG, A1

#add a root category named "f2"

log4j.rootCategory=INFO, stdout,f1,f2

 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd} %5p [%t] (%F:%L) - %m%n

# Pattern to output the caller's file name and line number.

log4j.appender.f1=org.apache.log4j.DailyRollingFileAppender

log4j.appender.f1.File=../logs/raweb.log

log4j.appender.f1.layout=org.apache.log4j.PatternLayout

log4j.appender.f1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p (%F:%L) - %m%n

 

#set information level to "ERROR"

log4j.appender.f2=org.apache.log4j.DailyRollingFileAppender

log4j.appender.f2.Threshold=ERROR

log4j.appender.f2.File=../logs/raweb_error.log

log4j.appender.f2.layout=org.apache.log4j.PatternLayout

log4j.appender.f2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p (%F:%L) - %m%n

 

二、        Jboss日志分离

修改jboss-4.2.3.GA\server\default\conf  jboss-log4j.xml文件

增加红色字体的配置信息(两处修改):

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

 

<!-- ===================================================================== -->

<!--                                                                       -->

<!--  Log4j Configuration                                                  -->

<!--                                                                       -->

<!-- ===================================================================== -->

 

<!-- $Id: jboss-log4j.xml 75507 2008-07-08 20:15:07Z stan.silvert@jboss.com $ -->

 

<!--

   | For more configuration infromation and examples see the Jakarta Log4j

   | owebsite: http://jakarta.apache.org/log4j

 -->

 

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">

 

   <!-- ================================= -->

   <!-- Preserve messages in a local file -->

   <!-- ================================= -->

 

   <!-- A time/date based rolling appender -->

   <appender name="FILE" class="org.jboss.logging.appender.DailyRollingFileAppender">

      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>

      <param name="File" value="${jboss.server.log.dir}/server.log"/>

      <param name="Append" value="false"/>

 

      <!-- Rollover at midnight each day -->

      <param name="DatePattern" value="'.'yyyy-MM-dd"/>

 

      <!-- Rollover at the top of each hour

      <param name="DatePattern" value="'.'yyyy-MM-dd-HH"/>

      -->

 

      <layout class="org.apache.log4j.PatternLayout">

         <!-- The default pattern: Date Priority [Category] Message\n -->

         <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>

 

         <!-- The full pattern: Date MS Priority [Category] (Thread:NDC) Message\n

         <param name="ConversionPattern" value="%d %-5r %-5p [%c] (%t:%x) %m%n"/>

          -->

      </layout>

   </appender>

  

   <appender name="ERRORFILE" class="org.jboss.logging.appender.DailyRollingFileAppender">

      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>

      <param name="File" value="${jboss.server.log.dir}/server_error.log"/>

      <param name="Append" value="false"/>

      <param name="Threshold" value="ERROR"/>

      <!-- Rollover at midnight each day -->

      <param name="DatePattern" value="'.'yyyy-MM-dd"/>

 

      <!-- Rollover at the top of each hour

      <param name="DatePattern" value="'.'yyyy-MM-dd-HH"/>

      -->

 

      <layout class="org.apache.log4j.PatternLayout">

         <!-- The default pattern: Date Priority [Category] Message\n -->

         <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>

 

         <!-- The full pattern: Date MS Priority [Category] (Thread:NDC) Message\n

         <param name="ConversionPattern" value="%d %-5r %-5p [%c] (%t:%x) %m%n"/>

          -->

      </layout>

   </appender>

 

   <!-- A size based file rolling appender

   <appender name="FILE" class="org.jboss.logging.appender.RollingFileAppender">

     <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>

     <param name="File" value="${jboss.server.log.dir}/server.log"/>

     <param name="Append" value="false"/>

     <param name="MaxFileSize" value="500KB"/>

     <param name="MaxBackupIndex" value="1"/>

 

     <layout class="org.apache.log4j.PatternLayout">

       <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>

     </layout>     

   </appender>

   -->

 

   <!-- ============================== -->

   <!-- Append messages to the 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">

         <!-- The default pattern: Date Priority [Category] Message\n -->

         <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>

      </layout>

   </appender>

 

   <!-- ====================== -->

   <!-- More Appender examples -->

   <!-- ====================== -->

 

   <!-- Buffer events and log them asynchronously

   <appender name="ASYNC" class="org.apache.log4j.AsyncAppender">

     <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>

     <appender-ref ref="FILE"/>

     <appender-ref ref="CONSOLE"/>

     <appender-ref ref="SMTP"/>

   </appender>

   -->

 

   <!-- EMail events to an administrator

   <appender name="SMTP" class="org.apache.log4j.net.SMTPAppender">

     <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>

     <param name="Threshold" value="ERROR"/>

     <param name="To" value="admin@myhost.domain.com"/>

     <param name="From" value="nobody@myhost.domain.com"/>

     <param name="Subject" value="JBoss Sever Errors"/>

     <param name="SMTPHost" value="localhost"/>

     <param name="BufferSize" value="10"/>

     <layout class="org.apache.log4j.PatternLayout">

       <param name="ConversionPattern" value="[%d{ABSOLUTE},%c{1}] %m%n"/>

     </layout>

   </appender>

   -->

 

   <!-- Syslog events

   <appender name="SYSLOG" class="org.apache.log4j.net.SyslogAppender">

     <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>

     <param name="Facility" value="LOCAL7"/>

     <param name="FacilityPrinting" value="true"/>

     <param name="SyslogHost" value="localhost"/>

     <layout class="org.apache.log4j.PatternLayout">

       <param name="ConversionPattern" value="[%d{ABSOLUTE},%c{1}] %m%n"/>

     </layout>

   </appender>

   -->

 

   <!-- Log events to JMS (requires a topic to be created)

   <appender name="JMS" class="org.apache.log4j.net.JMSAppender">

     <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>

     <param name="Threshold" value="ERROR"/>

     <param name="TopicConnectionFactoryBindingName" value="java:/ConnectionFactory"/>

     <param name="TopicBindingName" value="topic/MyErrorsTopic"/>

   </appender>

   -->

 

   <!-- Log events through SNMP

   <appender name="TRAP_LOG" class="org.apache.log4j.ext.SNMPTrapAppender">

     <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>

     <param name="ImplementationClassName" value="org.apache.log4j.ext.JoeSNMPTrapSender"/>

     <param name="ManagementHost" value="127.0.0.1"/>

     <param name="ManagementHostTrapListenPort" value="162"/>

     <param name="EnterpriseOID" value="1.3.6.1.4.1.24.0"/>

     <param name="LocalIPAddress" value="127.0.0.1"/>

     <param name="LocalTrapSendPort" value="161"/>

     <param name="GenericTrapType" value="6"/>

     <param name="SpecificTrapType" value="12345678"/>

     <param name="CommunityString" value="public"/>

     <param name="ForwardStackTraceWithTrap" value="true"/>

     <param name="Threshold" value="DEBUG"/>

     <param name="ApplicationTrapOID" value="1.3.6.1.4.1.24.12.10.22.64"/>

     <layout class="org.apache.log4j.PatternLayout">

            <param name="ConversionPattern" value="%d,%p,[%t],[%c],%m%n"/>

     </layout>

   </appender>

   -->

 

   <!--  Emit events as JMX notifications

   <appender name="JMX" class="org.jboss.monitor.services.JMXNotificationAppender">

      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>

     

      <param name="Threshold" value="WARN"/>

      <param name="ObjectName" value="jboss.system:service=Logging,type=JMXNotificationAppender"/>

     

      <layout class="org.apache.log4j.PatternLayout">

         <param name="ConversionPattern" value="%d %-5p [%c] %m"/>

      </layout>

   </appender>

   -->

  

   <!-- ================ -->

   <!-- Limit categories -->

   <!-- ================ -->

 

   <!-- Limit the org.apache category to INFO as its DEBUG is verbose -->

   <category name="org.apache">

      <priority value="INFO"/>

   </category>

 

   <!-- Limit the jacorb category to WARN as its INFO is verbose -->

   <category name="jacorb">

      <priority value="WARN"/>

   </category>

  

   <!-- Limit the org.jgroups category to WARN as its INFO is verbose -->

   <category name="org.jgroups">

      <priority value="WARN"/>

   </category>

  

   <!-- Limit the org.quartz category to INFO as its DEBUG is verbose -->

   <category name="org.quartz">

      <priority value="INFO"/>

   </category>

 

   <!-- Limit JSF logging to DEBUG.  FINER and FINEST will not be logged -->

   <category name="javax.enterprise.resource.webcontainer.jsf">

      <priority value="DEBUG" />

   </category>

               

   <!-- Limit JBoss categories

   <category name="org.jboss">

      <priority value="INFO"/>

   </category>

   -->

 

   <!-- Limit the JSR77 categories -->

   <category name="org.jboss.management">

      <priority value="INFO"/>

   </category>

 

   <!-- Show the evolution of the DataSource pool in the logs [inUse/Available/Max]

   <category name="org.jboss.resource.connectionmanager.JBossManagedConnectionPool">

     <priority value="TRACE"/>

   </category>

   -->

  

   <!-- Limit the org.jboss.serial (jboss-serialization) to INFO as its DEBUG is verbose -->

   <category name="org.jboss.serial">

      <priority value="INFO"/>

   </category>

  

   <!-- Decrease the priority threshold for the org.jboss.varia category

   <category name="org.jboss.varia">

     <priority value="DEBUG"/>

   </category>

   -->

 

   <!-- Enable JBossWS message tracing

   <category name="org.jboss.ws.core.MessageTrace">

    <priority value="TRACE"/>

   </category>

   -->

 

   <!--

      | An example of enabling the custom TRACE level priority that is used

      | by the JBoss internals to diagnose low level details. This example

      | turns on TRACE level msgs for the org.jboss.ejb.plugins package and its

      | subpackages. This will produce A LOT of logging output.

      |

      | Note: since jboss AS 4.2.x, the trace level is supported natively by

      | log4j, so although the custom org.jboss.logging.XLevel priority will

      | still work, there is no need to use it. The two examples that follow

      | will both enable trace logging.

   <category name="org.jboss.system">

     <priority value="TRACE" class="org.jboss.logging.XLevel"/>

   </category>

   <category name="org.jboss.ejb.plugins">

     <priority value="TRACE"/>

   </category>

   -->

 

   <!--

       | Logs these events to SNMP:

           - server starts/stops

           - cluster evolution (node death/startup)

           - When an EJB archive is deployed (and associated verified messages)

           - When an EAR archive is deployed

            

   <category name="org.jboss.system.server.Server">

     <priority value="INFO" />

     <appender-ref ref="TRAP_LOG"/>

   </category>

 

   <category name="org.jboss.ha.framework.interfaces.HAPartition.lifecycle">

     <priority value="INFO" />

     <appender-ref ref="TRAP_LOG"/>

   </category>

 

   <category name="org.jboss.deployment.MainDeployer">

     <priority value="ERROR" />

     <appender-ref ref="TRAP_LOG"/>

   </category>

  

   <category name="org.jboss.ejb.EJBDeployer">

     <priority value="INFO" />

     <appender-ref ref="TRAP_LOG"/>

   </category>

  

   <category name="org.jboss.deployment.EARDeployer">

     <priority value="INFO" />

     <appender-ref ref="TRAP_LOG"/>

   </category>

   -->

 

   <!-- Clustering logging -->

   <!-- Uncomment the following to redirect the org.jgroups and

      org.jboss.ha categories to a cluster.log file.

 

   <appender name="CLUSTER" class="org.jboss.logging.appender.RollingFileAppender">

     <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>

     <param name="File" value="${jboss.server.log.dir}/cluster.log"/>

     <param name="Append" value="false"/>

     <param name="MaxFileSize" value="500KB"/>

     <param name="MaxBackupIndex" value="1"/>

 

     <layout class="org.apache.log4j.PatternLayout">

       <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>

     </layout>

   </appender>

   <category name="org.jgroups">

     <priority value="DEBUG" />

     <appender-ref ref="CLUSTER"/>

   </category>

   <category name="org.jboss.ha">

     <priority value="DEBUG" />

     <appender-ref ref="CLUSTER"/>

   </category>

   -->

  

   <!-- ======================= -->

   <!-- Setup the Root category -->

   <!-- ======================= -->

 

   <root>

      <appender-ref ref="CONSOLE"/>

      <appender-ref ref="FILE"/>

      <appender-ref ref="ERRORFILE"/>

   </root>

 

</log4j:configuration>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值