log4j2日志保存

logj2与log4j的区别

  1. log4j2是log4j的升级版,log4j 2.0与以往的1.x有一个明显的不同,其配置文件只能采用.xml, .json或者 .jsn。在默认情况下,系统选择 configuration文件的优先级如下:(classpath为scr文件夹):
    1.classpath下名为 log4j-test.json 或者log4j-test.jsn文件
    2.classpath下名为 log4j2-test.xml
    3.classpath下名为 log4j.json 或者 log4j.jsn文件
    4.classpath下名为 log4j2.xml
    必须注意.xml 文件的文件名为log4j2
  1. 加载方式不同 (web.xml)
  • log4j 配置方式
  • log4j2 配置方式(servlet 2.5以上)
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>classpath:config/log4j.properties</param-value>
</context-param>
<context-param>
    <param-name>log4jRefreshInterval</param-name>
    <param-value>60000</param-value>
</context-param>
<listener>
    <listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class>
  </listener>
  <context-param>
      <param-name>isLog4jAutoInitializationDisabled</param-name>
      <param-value>true</param-value>
  </context-param>

lo4j2的配置

  1. 参数说明
root标签为log的默认输出形式,如果一个类的log没有在loggers中明确指定其输出lever与格式,那么就会采用root中定义的格式。
Appenders标签,其实就是输出,有各种扩展组件,主要类型有:
ConsoleAppender   输出结果到控制台
FileAppender  输出结果到指定文件
RollingFileAppender   同样输出结果到文件,区别是用一个buffer,因此速度会快点
这里介绍下RollingRandomessFile 的相关属性:
name:表示该appender的名称
fileName:表示输出的文件的路径
append:是否追加,true表示追加内容到所在的日志,false表示每次都覆盖
filePattern:表示当日志到达指定的大小或者时间,产生新日志时,旧日志的命名路径。
PatternLayout:和log4j1一样,指定输出日志的格式
Policies:策略,表示日志什么时候应该产生新日志,可以有时间策略和大小策略等
ThresholdFilter :过滤器,如果你要选择控制台只能输出ERROR以上的类别,你就用ThresholdFilter,把level设置成ERROR,onMatch="ACCEPT" onMismatch="DENY" 的意思是匹配就接受,否则直接拒绝
  1. 配置属性 (resource 路径下)
  • java项目
  • web项目 (${sys:catalina.home} 是tomcat下的根目录)
<!--  级别:OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<configuration status="OFF">
	<appenders>
		<Console name="Console" target="SYSTEM_OUT">
			<ThresholdFilter level="trace" onMatch="ACCEPT"
				onMismatch="DENY" />
			<PatternLayout
				pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n" />
		</Console>
		<File name="log" fileName="target/test.log" append="false">
			<PatternLayout
				pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n" />
		</File>
		<File name="requestReport" fileName="target/report_request.log"
			append="false">
			<PatternLayout
				pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n" />
		</File>
		<RollingFile name="RollingFile" fileName="logs/payrule.log"
			filePattern="logs/$${date:yyyy-MM}/payrule-%d{yyyy-MM-dd}.log">
			<PatternLayout
				pattern="%d{yyyy.MM.dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n" />
			<!-- 按天生成日志文件 -->
			<Policies>
				<TimeBasedTriggeringPolicy modulate="true"
					interval="1" />
			</Policies>
		</RollingFile>
	</appenders>
	<loggers>
		<root level="info">
			<appender-ref ref="RollingFile" />
			<appender-ref ref="Console" />
		</root>
		<logger name="report" level="trace" additivity="false">
			<appender-ref ref="requestReport"></appender-ref>
		</logger>
	</loggers>
</configuration>
<!--  级别: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<configuration status="INFO">
    <appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
        </Console>
        <File name="log" fileName="target/test.log" append="false">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
        </File>
        <File name="requestReport" fileName="target/report_request.log" append="false">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
        </File>
        <RollingFile name="RollingFile" fileName="${sys:catalina.home}/sinopaylog/wechatpay/wechatpay.log"
                     filePattern="${sys:catalina.home}/sinopaylog/wechatpay/$${date:yyyy-MM}/wechatpay-%d{yyyy-MM-dd}.log">
            <PatternLayout pattern ="%d{yyyy.MM.dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
            <!-- 按天生成日志文件 -->
          <Policies>
    			<TimeBasedTriggeringPolicy modulate="true" interval="1"/>
    		</Policies>
        </RollingFile>
    </appenders>
    <loggers>
          <logger name="org.springframework" level="INFO"></logger>
         <logger name="org.mybatis" level="INFO"></logger>
        <root level="DEBUG">
            <appender-ref ref="RollingFile"/>
            <appender-ref ref="Console"/>
        </root>
    </loggers>


</configuration>

顺便贴上log4j的配置文件已被以后使用


log4j.rootLogger=${log4j.leve},A1,DRF
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
# log4j.appender.A1.layout.ConversionPattern=%d %5p [%t] (%F:%L) - %m%n
log4j.appender.A1.layout.ConversionPattern=%d %5p [%F:%L] : %m%n

log4j.appender.DRF=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DRF.Threshold=${log4j.leve}
log4j.appender.DRF.DatePattern='.'yyyy-MM-dd
log4j.appender.DRF.File=logs/sinopay-service-payrules.log
log4j.appender.DRF.Append=true
log4j.appender.DRF.layout=org.apache.log4j.PatternLayout
log4j.appender.DRF.layout.ConversionPattern=[%-5p][%d{yyyyMMdd HH:mm:ss,SSS}][%C{1}:%L] %m%n


###\u8F93\u51FASQL 
log4j.logger.com.ibatis=${log4j.ale}
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=${log4j.ale}
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=${log4j.leve}
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=${log4j.ale}
log4j.logger.java.sql.Connection=${log4j.ale}
log4j.logger.java.sql.Statement=${log4j.ale}
log4j.logger.java.sql.PreparedStatement=${log4j.ale}
org.springframework = ${log4j.ale}
org.apache.zookeeper = ${log4j.ale}

猜你喜欢

转载自blog.csdn.net/pengjwhx/article/details/82757915
今日推荐