1. 程式人生 > >log4j, log4j2 實用配置;log4j 2 非同步配置

log4j, log4j2 實用配置;log4j 2 非同步配置

目錄:

log4j 還是 log4j 2 ?
- log4j 相容jdk6, 最新版本是1.2.17(不再更新)
- log4j2 不相容jdk7之前的版本, 最新版本是2.6.x (截止2016-06-15)
但是,log4j 2 採用了非同步寫檔案的機制,比log4j 提高了10倍以上的效能。

所以,對於還在用Java6的伺服器來說 請使用log4j。

新專案,儘量使用jdk 7 和 log4j 2

Java Web專案指定log4j.properties

<!-- 在 WebContent/WEB-INF/web.xml 中新增 -->
<listener> <listener-class> org.springframework.web.util.Log4jConfigListener </listener-class> </listener> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/log4j.properties</param-value>
</context-param> <context-param> <param-name>log4jRefreshInterval</param-name> <param-value>6000</param-value> </context-param>

log4j

### set log levels ###
#設定rootLogger使用名為E和I的輸出設定
#第一個逗號前是根日誌等級
log4j.rootLogger = DEBUG , E , I

#windows下絕對路徑以tomcat安裝位置所在的碟符為準,
#如tomcat安裝位置在D盤,則d:\\wls\\apache\\applogs\\ mylog.home=/wls/apache/applogs/ ## 管理引用的第三方 jar包的日誌輸出, OFF是關閉 log4j.logger.org.springframework=OFF log4j.logger.org.apache.struts2=OFF log4j.logger.com.opensymphony.xwork2=OFF log4j.logger.com.ibatis=OFF log4j.logger.org.hibernate=OFF log4j.logger.java.sql.ResultSet=INFO log4j.logger.org.apache=INFO log4j.logger.java.sql.Connection=DEBUG log4j.logger.java.sql.Statement=DEBUG log4j.logger.java.sql.PreparedStatement=DEBUG ### Info Log File ### log4j.appender.I = org.apache.log4j.RollingFileAppender log4j.appender.I.File = ${mylog.home}info.log log4j.appender.I.Append = true # 防止在linux和windows上跑,中文編碼不一致,亂碼 log4j.appender.I.encoding=UTF-8 log4j.appender.I.Threshold = INFO log4j.appender.I.MaxFileSize= 20000KB#DailyRollingFileAppender不支援 log4j.appender.I.MaxBackupIndex= 3 #DailyRollingFileAppender不支援 log4j.appender.I.layout = org.apache.log4j.PatternLayout log4j.appender.I.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}[%5p] [ %c %4L] %m%n ### Error Log file ### log4j.appender.E = org.apache.log4j.RollingFileAppender log4j.appender.E.File = ${pafa.log.home}error.log log4j.appender.E.Append = true # 防止在linux和windows上跑,中文編碼不一致,亂碼 log4j.appender.E.encoding=UTF-8 log4j.appender.E.Threshold = ERROR log4j.appender.E.MaxFileSize= 20000KB log4j.appender.E.MaxBackupIndex= 3 log4j.appender.E.layout = org.apache.log4j.PatternLayout log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %p ] [ %c %4L ] %m%n

巧用rootlevel和package日誌level禁止hibernate日誌輸出

#根使用FATAL(FATAL>ERROR>INFO)級別,這樣hibernate就不會輸出了
log4j.rootLogger=FATAL, A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

#  com.foo.myapp 使用INFO級別輸出
log4j.logger.com.foo.myapp=INFO

log4j2

log4j 2 支援 properties 格式, xml 格式, json 格式的配置檔案。為了降低從 log4j 遷移到 log4j 2 的學習成本, 先使用 properties 格式。

src/log4j2.properties 內容如下,注意檔名要帶 “2”:

status = error
name = PropertiesConfig

property.filename = target/rolling/rollingtest.log

filters = threshold

filter.threshold.type = ThresholdFilter
filter.threshold.level = debug

#appenders = console, I, E
#不要輸出到console,要養成看日誌檔案的習慣
appenders =I, E

#appender.console.type = Console
#appender.console.name = STDOUT
#appender.console.target = SYSTEM_OUT
#appender.console.layout.type = PatternLayout
#appender.console.layout.pattern = %-d{yyyy-MM-dd HH:mm:ss} [ %p ] [ %c ] %m%n

appender.I.type = RollingFile
appender.I.name = InfoRollingFile
appender.I.fileName = /spider/logs/info.log
appender.I.filePattern = /spider/logs/info_%d{yyyy-MM-dd}_%i.log
appender.I.layout.type = PatternLayout
appender.I.layout.pattern = %-d{yyyy-MM-dd HH:mm:ss} [ %p ] [ %c ] %m%n
appender.I.policies.type = Policies
appender.I.policies.time.type = TimeBasedTriggeringPolicy
appender.I.policies.time.interval = 1
appender.I.policies.time.modulate = true
appender.I.policies.size.type = SizeBasedTriggeringPolicy
appender.I.policies.size.size=20M
appender.I.strategy.type = DefaultRolloverStrategy
appender.I.strategy.max = 100


appender.E.type = RollingFile
appender.E.name = ErrorRollingFile
appender.E.fileName = /spider/logs/error.log
appender.E.filePattern = /spider/logs/error_%d{yyyy-MM-dd}_i.log
appender.E.layout.type = PatternLayout
appender.E.layout.pattern = %-d{yyyy-MM-dd HH:mm:ss} [ %p ] [ %c ] %m%n
appender.E.policies.type = Policies
appender.E.policies.time.type = TimeBasedTriggeringPolicy
appender.E.policies.time.interval = 1
appender.E.policies.time.modulate = true
appender.E.policies.size.type = SizeBasedTriggeringPolicy
appender.E.policies.size.size=20M
appender.E.strategy.type = DefaultRolloverStrategy
appender.E.strategy.max = 100


rootLogger.level = info
#rootLogger.appenderRefs = stdout,I,E
rootLogger.appenderRefs =I,E
#rootLogger.appenderRef.stdout.ref = STDOUT
rootLogger.appenderRef.I.ref = InfoRollingFile
rootLogger.appenderRef.I.level = info
rootLogger.appenderRef.E.ref = ErrorRollingFile
rootLogger.appenderRef.E.level = error

log4j2的.xml的配置檔案, 支援指定哪些包輸出, .properties的配置檔案沒試過.

用Additivity禁止hibernate日誌輸出

Perhaps it is desired to eliminate all the TRACE output from everything except com.foo.Bar. Simply changing the log level would not accomplish the task. Instead, the solution is to add a new logger definition to the configuration:

It is possible to disable logging for certain parts of the application

如前文所述, log4j 允許你在不修改程式程式碼的前提下, 重新定義logging的行為. 禁止程式某些部分的日誌輸出是可行的.

src/log4j2.xml 內容如下,注意檔名中的“2”不可省略:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
        <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
    </Console>
    <File name="I" fileName="logs/info.log" bufferedIO="false"
        advertise="true">
        <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
    </File>
    <File name="E" fileName="logs/error.log" bufferedIO="false"
        advertise="true">
        <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
        <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
    </File>
</Appenders>

  <Loggers>
    <!--制定輸出com包中的logger-->
    <Logger name="com" level="debug"> 
      <AppenderRef ref="Console"/>
      <AppenderRef ref="I"/>
      <AppenderRef ref="E"/>
    </Logger>

    <!--忽略hibernate等第三方包的日誌-->
    <Root level="OFF">
    </Root>

  </Loggers>
</Configuration>

log4j 2 非同步配置

關鍵配置:

<appender name="xxx" class="org.apache.log4j.AsyncAppender"> 
<!--快取大小影響效能 256 時最佳-->
<param name="BufferSize" value="512"/> 

相關推薦

log4j, log4j2 實用配置log4j 2 非同步配置

目錄: log4j 還是 log4j 2 ? - log4j 相容jdk6, 最新版本是1.2.17(不再更新) - log4j2 不相容jdk7之前的版本, 最新版本是2.6.x (截止2016-06-15) 但是,

14.1 NFS介紹14.2 NFS服務端安裝配置14.3 NFS配置選項

NFS服務端安裝配置14.1 NFS介紹1. NFS是Network File System的縮寫2. NFS最早由Sun公司開發,分2,3,4三個版本,2和3由Sun起草開發,4.0開始Netapp公司參與並主導開發,最新為4.1版本3. NFS數據傳輸基於RPC協議,RPC為Remote Procedur

log4j 2讀取配置檔案的三種方法

log4j 2讀取配置檔案的三種方法。 log4j 2讀取的配置檔案可以分為三類:src下的配置檔案、絕對路徑的配置檔案、相對路徑的配置檔案。我們一一給例子。直接看程式碼:   package com.herman.test;   impor

MyBatis3-配置使用log4j輸出日誌

git 並且 setting name spring 引入 aso log art 這篇文章的思路源自http://www.cnblogs.com/EasonJim/p/7050312.html這個錯誤的解決,還是使用上一章http://www.cnblogs.com/Ea

java:Mybatis框架1(基本配置log4j

屬性 apache led sta sql inpu ack ima 文件中 1.mybatis01:   db.properties: driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3

配置log4j後信息log還是在Console中輸出

app 輸出 debug logger pat end att deb file 1、如下是配置在Console中輸出 #log4j.rootLogger=DEBUG,STDOUT,LOGFILE #log4j.appender.stdout=org.

配置log4j.properties 詳解與配置步驟

詳解 項目 import throw 得到 容器 地方 med play 一、Log4j基本使用方法 Log4j由三個重要的組件構成:【日誌信息的優先級】,【日誌信息的輸出目的地】,【日誌信息的輸出格式】。 日誌信息的優先級從高到低有ERROR、WARN、 INFO、D

eclipse執行spark的scala程式console配置日誌log4j輸出級別

預設輸出info級別,結果都淹沒在info海洋裡 先看看自己的eclipse輸出的第一行 Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties 然後再找找spark的import

log4j配置和springboot中Logback配置

log4j 1. 導包 log4j下載地址 2. 配置檔案 預設配置檔案在src目錄下,個人感覺用properties還是比較爽的,在src下新建log4j.properties檔案 注:日誌級別 (debug < info < warn < e

Log4j配置Log4j叢集配置Log4j Weblogic叢集配置

Log4j配置,Log4j叢集配置,Log4j Weblogic叢集配置     ================================ ©Copyright 蕃薯耀 2018年10月19日 http://fanshuyao.iteye.com/  

maven中配置slf4j-log4jlog4j實現包

maven中配置slf4j-log4j、log4j實現包 java中很多開源元件pom.xml中都內建引入了slf4j的日誌jar包,如quartz-2.3.jar的pom依賴中就有slf4j-api-1.7.7.jar slf4j,提起來大家可能不太熟悉,但若說起它的一個實現log4j 大家可

log配置檔案log4j.propeties

#日誌的4種級別ERROR(錯誤)、WARN(警告潛在的錯誤)、INFO(粗粒度資訊)、DEBUG(除錯的細粒度)另FATAL(致命的錯誤) #INFO等級的資訊存入日誌檔案 log4j.rootLogger=INFO,ConsoleAppender,FileAppender log4j.a

配置slf4j/log4j輸出到不同的檔案

在實際中,我們可能想要將不同型別的日誌分類輸出到不同的檔案中。 關於 log4j 的配置引數解釋可以參考: slf4j使用log4j的配置引數: https://blog.csdn.net/yx0628

springmvc 專案完整示例05 日誌 --log4j整合 配置 log4j屬性設定 log4j 配置檔案 log4j應用

log4j 就是log for java嘛,老外都喜歡這樣子,比如那個I18n  ---internationalization  不就是i和n之間有18個字母... 直接入正題 他是一個強大的日止功能元件 想要用他,根把大象放到冰箱裡面一樣多 1,下載一個jar包,放到專案中去 2,搞一個配

Log4j和logback衝突,導致log4j配置失效控制檯一直列印DEBUG級別的日誌

Log4j和logback是有衝突的,這樣會導致Log4j的日誌級別降低到DEBUG級別。maven依賴中把logback的隱式依賴給去掉。fastdfs依賴於logback 去除依賴的方法: <

Spring+hibernate的配置log4j的使用

今日工作內容:上學校課程,學Spring+hibernate1、spring和hibernate的配置:<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframew

Log4j,Log4j2,logback等常用日誌框架比較

一、Log4j Log4j是Apache的一個開放原始碼專案,通過使用Log4j,我們可以控制日誌資訊輸送的目的地是控制檯、檔案、資料庫等;我們也可以控制每一條日誌的輸出格式;通過定義每一條日誌資訊的級別,我們能夠更加細緻地控制日誌的生成過程。  Log4j有7種不同的log級別,按照

Log4J配置 及多個logger配置例項

log4j.rootLogger=DEBUG, stdout, D, InfoAppender, E #log4j.rootCategory=ERROR log4j.logger.fileLog= INFO,customAppender #INFO cannot be removed log4j.add

mybatis01-創建,基本配置log4j,動態sql,實現

本質 占位符 fix rac property 導入 null XML factory 知識點比較瑣碎,一點點的整理起來的。 一.mybatis創建 mybatis是一個ORM框架,為我們操作數據庫提供了很大的方便。 首先,我是給予maven使用的mybatis 1.導入j

logback log4j log4j2 效能實測

日誌已經成為系統開發中不可或缺的一部分. 但是針對logback, log4j和log4j2. 究竟改如何選擇? 到底效能如何? 今天我們做一個實際的測評. 相信看完這篇文章, 對這三個日誌框架會有很清楚的一個瞭解. 實驗環境 OS: Mac OS X 10.12.1C