導航:首頁 > 版本升級 > log4jdebug輸出到其他文件中

log4jdebug輸出到其他文件中

發布時間:2023-11-05 09:15:36

① log4j的使用,即java該如何使用日誌文件

java使用日誌文件log4j的方法:

1、 新建一個Java工程,導入Log4j包,pom文件中對應的配置代碼如下:

<!-- log4j support -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>

2、resources目錄下創建log4j.properties文件

### 設置###
log4j.rootLogger = debug,stdout,D,E

### 輸出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

### 輸出DEBUG 級別以上的日誌到=/home/qi/logs/debug.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = /home/qi/logs/debug.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

### 輸出ERROR 級別以上的日誌到=/home/admin/logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =/home/admin/logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

3、輸出日誌的例子如下

package com.java.log;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Log4JTest {
private static final Logger logger = LoggerFactory.getLogger(Log4JTest.class);

public static void main(String[] args) {
// 記錄debug級別的信息
logger.debug("This is debug message.");
// 記錄info級別的信息
logger.info("This is info message.");
// 記錄error級別的信息
logger.error("This is error message.");
}
}

4、輸出結果
首先,控制台輸入如下圖所示:

② 如何用log4j輸出多個自定義日誌文件

輪襲log4j輸出多個自定義日和伏志文件

如果在實際應用中需要輸出獨立的日誌文件,怎樣才能把所需的內容從原有日誌中分離,形成單獨的日誌文件呢?

先看一個常見的log4j.properties文件,它是在控制台和test.log文件中記錄日誌:

復制代碼 代碼如下喚桐攜:

log4j.rootLogger=DEBUG, stdout, logfile

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

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

log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n

log4j.appender.logfile=org.apache.log4j.RollingFileAppender

log4j.appender.logfile.File=log/test.log

log4j.appender.logfile.MaxFileSize=128MB

log4j.appender.logfile.MaxBackupIndex=3

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

log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c.%M(%L) - %m%n

如果在同一類中需要輸出多個日誌文件呢?其實道理是一樣的,先在Test.java中定義:

復制代碼 代碼如下:

private static Log logger1 = LogFactory.getLog("mylogger1");

private static Log logger2 = LogFactory.getLog("mylogger2");

log4j.properties中配置如下:

復制代碼 代碼如下:

log4j.logger.mylogger1=DEBUG,test1

log4j.appender.test1=org.apache.log4j.FileAppender

log4j.appender.test1.File=log/test1.log

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

log4j.appender.test1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c.%M(%L) - %m%n

log4j.logger.mylogger2=DEBUG,test2

log4j.appender.test2=org.apache.log4j.FileAppender

log4j.appender.test2.File=log/test2.log

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

log4j.appender.test2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c.%M(%L) - %m%n

不同日誌要使用不同的logger(如輸出到test1.log的要用logger1.info("abc"))。

還有一個問題,就是這些自定義的日誌默認是同時輸出到log4j.rootLogger所配置的日誌中的,如何能只讓它們輸出到自己指定的日誌中呢?別急,這里有個開關:

log4j.additivity. mylogger1 = false

它用來設置是否同時輸出到log4j.rootLogger所配置的日誌中,設為false就不會輸出到其它地方了。

但是這種方式有個小缺陷,那就是列印的日誌中類名只能是mylogger或者mylogger2。

2 動態配置路徑

程序需要的.日誌路徑需要不斷的變化,而又不可能每次都去改配置文件,此時可以利用環境變數來解決。

log4j的配置如下:

復制代碼 代碼如下:

log4j.rootLogger=DEBUG,INFOLOG,DEBUGLOG

#info log

log4j.appender.INFOLOG =org.apache.log4j.DailyRollingFileAppender

log4j.appender.INFOLOG.File= ${log.dir}/${log.info.file}

log4j.appender.INFOLOG.DatePattern=.yyyy-MM-dd

log4j.appender.INFOLOG.Threshold=INFO

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

log4j.appender.INFOLOG.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c.%M(%L) - %m%n

#debug log

log4j.appender.DEBUGLOG =org.apache.log4j.RollingFileAppender

log4j.appender.DEBUGLOG.File= ${log.dir}/${log.debug.file}

log4j.appender.DEBUGLOG.Threshold=DEBUG

log4j.appender.DEBUGLOG.MaxFileSize=128MB

log4j.appender.DEBUGLOG.MaxBackupIndex=3

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

log4j.appender.DEBUGLOG.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c.%M(%L) - %m%n

此時,在使用log列印日誌之前,需要利用System定義日誌的輸出路徑和文件名的環境變數:

復制代碼 代碼如下:

System.setProperty(「log.dir」, logDir);

System.setProperty(「log.info.file」, infoLogFileName);

System.setProperty(「log.debug.file」, debugLogFileName);

附:Pattern參數的格式含義

%c 輸出日誌信息所屬的類的全名

%d 輸出日誌時間點的日期或時間,默認格式為ISO8601,也可以在其後指定格式,比如:%d{yyy-MM-dd HH:mm:ss },輸出類似:2013-8-19- 22:10:28

%f 輸出日誌信息所屬的類的類名

%l 輸出日誌事件的發生位置,即輸出日誌信息的語句處於它所在的類的第幾行

%m 輸出代碼中指定的信息,如log(message)中的message

%n 輸出一個回車換行符,Windows平台為「/r/n」,Unix平台為「/n」

%p 輸出優先順序,即DEBUG,INFO,WARN,ERROR,FATAL。如果是調用debug()輸出的,則為DEBUG,依此類推

%r 輸出自應用啟動到輸出該日誌信息所耗費的毫秒數

%t 輸出產生該日誌事件的線程名

③ log4j2怎麼輸出日誌到文件

、前提條件 系統必須使用LOG4J進行志管理否則效 系統必須包含mons-logging-xxx.jarlog4j-xxx.jar兩JAR包XXX版本號 二、操作步驟 1、創建志表 要志持久化必須資料庫創建張用存儲志信息表表內欄位志 主要屬性包括:操作類執行列印間志級別志內容 CREATE TABLE RESLOG (LOGID VARCHAR2(20) NOT NULL, CLASS VARCHAR2(200), METHOD VARCHAR2(100), CREATETIME DATE, LOGLEVEL VARCHAR2(50), MSG VARCHAR2(4000)) 存儲類類全部路徑所CLASS欄位度需要比較 2、志管理配置 LOG4J主要兩種配置文件.properties.xmlproperties文件基礎講 述關於XML文件配置相信家看完面介紹能輕松完 通LOG4J.PROPERTIES文件第行: log4j.rootLogger= XXX句控制志輸想吧志輸資料庫 則需要XXX添加DBlog4j.rootLogger=INFO,stdout,Platform,db面 句志級別INFO信息輸STDOUT,PLATFORMDB (DATABASE) 配置信息LOG4J知道用戶想信息存入資料庫接我要 配置資料庫相關信息(包括緩存資料庫連接信息執行SQL)配置信息: ###JDBCAppender log4j.appender.db = org.apache.log4j.jdbc.JDBCAppender //配置選擇使用JDBCAppender志信息存儲資料庫要做其操作自寫類繼承JDBCAppenderOK log4j.appender.db.BufferSize=1 //配置告訴LOG4J條志信息才存入資料庫我1,說條查條顯產環境影響系統性能 log4j.appender.db.driver=oracle.jdbc.driver.OracleDriver //配置告訴LOG4J做資料庫存儲所用驅 log4j.appender.db.URL=jdbc:oracle:thin:@:: //配置資料庫連接URL用說都知道 log4j.appender.db.user=XXX log4j.appender.db.password=XXX //面兩資料庫連接用戶名密碼 log4j.appender.db.sql=insert into RESLOG (LogId,Class,Method,createTime,LogLevel,MSG) values (SQ_RESLOG_LOGID.Nextval,'%C','%M', to_date('%d{yyyy-MM-dd HH:mm:ss}','yyyy-MM-dd HH24:mi:ss'),'%p','%m') //配置告訴LOG4J吧志存儲資料庫用SQL語句SQ_RESLOG_LOGID.Nextval我建SEQUENCE;『%C』志CLASS;『%M』列印志執行類;『%d』列印間支持格式化;『%P』志級別包括INFO、DEBUG、ERROR等;『%m』MSG志內容注意參數區寫 log4j.appender.db.layout=org.apache.log4j.PatternLayout 通面配置現再啟服務LOG4J自原存儲.LOG文件信息同存儲資料庫

④ 如何使用log4j輸出單個級別的log到指定文件

這種情況下,就需要debug、info、warn、error分別進行配置了。之後通過priority屬性控制日誌實際輸出級別就可以。

<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPElog4j:configurationPUBLIC"-//LOGGER""log4j.dtd">
<log4j:configurationxmlns:log4j="http://jakarta.apache.org/log4j/">
<!--Appenders-->
<appendername="console"class="org.apache.log4j.ConsoleAppender">
<paramname="Target"value="System.out"/>
<layoutclass="org.apache.log4j.PatternLayout">
<paramname="ConversionPattern"value="%-d{yyyy-MM-ddHH:mm:ss,SSS}||||%p||||%m%n"/>
</layout>
</appender>
<!--輸出debug日誌-->
<appendername="debug.log"class="org.apache.log4j.DailyRollingFileAppender">
<paramname="File"value="d:/tmrpt/log/debug.log"/>
<paramname="Append"value="true"/>
<paramname="encoding"value="UTF-8"/>
<paramname="DatePattern"value="yyyyMMddHH"/>
<layoutclass="org.apache.log4j.PatternLayout">
<paramname="ConversionPattern"value="%-d{yyyy-MM-ddHH:mm:ss,SSS}[%p][%c]-%m%n"/>
</layout>
<filterclass="org.apache.log4j.varia.LevelRangeFilter">
<paramname="levelMin"value="debug"/>
<paramname="levelMax"value="debug"/>
<paramname="AcceptOnMatch"value="true"/>
</filter>
</appender>
<!--輸出info日誌-->
<appendername="info.log"class="org.apache.log4j.DailyRollingFileAppender">
<paramname="File"value="d:/tmrpt/log/info.log"/>
<paramname="Append"value="true"/>
<paramname="encoding"value="UTF-8"/>
<paramname="DatePattern"value="yyyyMMddHH"/>
<layoutclass="org.apache.log4j.PatternLayout">
<paramname="ConversionPattern"value="%-d{yyyy-MM-ddHH:mm:ss,SSS}[%p][%c]-%m%n"/>
</layout>
<filterclass="org.apache.log4j.varia.LevelRangeFilter">
<paramname="levelMin"value="info"/>
<paramname="levelMax"value="info"/>
<paramname="AcceptOnMatch"value="true"/>
</filter>
</appender>

<!--輸出warn日誌-->
<appendername="warn.log"class="org.apache.log4j.DailyRollingFileAppender">
<paramname="File"value="d:/tmrpt/log/warn.log"/>
<paramname="Append"value="true"/>
<paramname="encoding"value="UTF-8"/>
<paramname="DatePattern"value="yyyyMMddHH"/>
<layoutclass="org.apache.log4j.PatternLayout">
<paramname="ConversionPattern"value="%-d{yyyy-MM-ddHH:mm:ss,SSS}[%p][%c]-%m%n"/>
</layout>
<filterclass="org.apache.log4j.varia.LevelRangeFilter">
<paramname="levelMin"value="warn"/>
<paramname="levelMax"value="warn"/>
<paramname="AcceptOnMatch"value="true"/>
</filter>
</appender>

<!--輸出error日誌-->
<appendername="error.log"class="org.apache.log4j.DailyRollingFileAppender">
<paramname="File"value="d:/tmrpt/log/error.log"/>
<paramname="Append"value="true"/>
<paramname="encoding"value="UTF-8"/>
<paramname="DatePattern"value="yyyyMMddHH"/>
<layoutclass="org.apache.log4j.PatternLayout">
<paramname="ConversionPattern"value="%-d{yyyy-MM-ddHH:mm:ss,SSS}[%p][%c]-%m%n"/>
</layout>
<filterclass="org.apache.log4j.varia.LevelRangeFilter">
<paramname="levelMin"value="error"/>
<paramname="levelMax"value="error"/>
<paramname="AcceptOnMatch"value="true"/>
</filter>
</appender>

<!--RootLogger-->
<root>
<!--priority配置輸出日誌級別-->
<priorityvalue="info"/>
<appender-refref="console"></appender-ref>
<appender-refref="info.log"/>
<appender-refref="debug.log"/>
<appender-refref="warn.log"/>
<appender-refref="error.log"/>
</root>
</log4j:configuration>

⑤ Java log4j 配置文件怎麼寫,可以輸出log.info("")中的內容到指定目錄的.log文件

log4j.rootLogger=info, ServerDailyRollingFile, stdout
log4j.appender.ServerDailyRollingFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.ServerDailyRollingFile.DatePattern='.'yyyy-MM-dd
log4j.appender.ServerDailyRollingFile.File=/usr/logs/mylog.log
log4j.appender.ServerDailyRollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.ServerDailyRollingFile.layout.ConversionPattern=%d - %m%n
log4j.appender.ServerDailyRollingFile.Append=true

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} %p [%c] %m%n

⑥ java工程中如何使用log4j輸出指定路徑日誌文件,是java工程,不是web工程,謝謝

此文檔放在項目編譯文件.class相同的位置
### set log levels ###log4j.rootLogger = debug , stdout , D### 輸出到控制台 ###log4j.appender.stdout = org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target = System.outlog4j.appender.stdout.layout = org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{1}:%L - %m%n### 輸出到日誌文件 ###log4j.appender.D = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.D.File = logs/log.loglog4j.appender.D.Append = truelog4j.appender.D.Threshold = DEBUGlog4j.appender.D.layout = org.apache.log4j.PatternLayoutlog4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n### 保存異常信息到單獨文件 ###log4j.appender.D = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.D.File = logs/error.loglog4j.appender.D.Append = truelog4j.appender.D.Threshold = ERRORlog4j.appender.D.layout = org.apache.log4j.PatternLayoutlog4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
配置獲取方法:
PropertyConfigurator.configure( "D:\\Project Files\\myeclipse\\commontest\\bin\\log\\log4j\\log4j.properties" );
Logger log=Logger. getLogger(TestLog4j.class);
log.warn( "嘿嘿");
log.debug( "嗚嗚");
log.error( "錯啦");

⑦ 將console中所有輸出通過log4j輸出到文件中

log4j.rootLogger=info,stdout,info,debug,error
log4j.logger.com.mybatis=info
log4j.logger.com.opensymphony.xwork2=info
log4j.logger.java.sql=debug
log4j.logger.org.apache.struts=info
log4j.logger.org.springframework=info
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n

log4j.logger.debug=debug
log4j.appender.debug=org.apache.log4j.DailyRollingFileAppender
log4j.appender.debug.layout=org.apache.log4j.PatternLayout
log4j.appender.debug.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n
log4j.appender.debug.datePattern='.'yyyy-MM-dd
log4j.appender.debug.Threshold = DEBUG
log4j.appender.debug.append=true
log4j.appender.debug.File=C:/logs/項目名稱/debug.log

log4j.logger.error=error
log4j.appender.error=org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.layout=org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n
log4j.appender.error.datePattern='.'yyyy-MM-dd
log4j.appender.error.Threshold = ERROR
log4j.appender.error.append=true
log4j.appender.error.File=C\:/logs/項目名稱/error.log

⑧ Java怎樣使用log4j2向不同文件中寫入不同的日誌

解決方法 1:
看看RoutingAppender,也許你能從這入手。

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="DEBUG" name="MyApp" packages="">
<appenders>
<Routing name="Routing">
<Routes pattern="$${ctx:USERNAME}">
<Route>
<RollingFile name="user.log" append="true" fileName="users/${ctx:USERNAME}.txt"
filePattern="users/archive/${ctx:USERNAME}-%d{MM-dd-yyyy}-%i.txt.gz">
<PatternLayout>
<pattern>%d{ISO8601} [%t] %p %c %L - %m%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="50 MB"/>
</Policies>
</RollingFile>
</Route>
</Routes>
</Routing>
</appenders>

<loggers>
<root level="TRACE">
<appender-ref ref="Routing" level="DEBUG" />
</root>
</loggers>
</configuration>

閱讀全文

與log4jdebug輸出到其他文件中相關的資料

熱點內容
630升級工程武器 瀏覽:936
用換機助手接收的軟體文件在哪找 瀏覽:282
閱達app一教一輔五年級有哪些 瀏覽:7
win10系統用f2調節音量 瀏覽:19
壓縮文件密碼器 瀏覽:840
線下活動數據分析有哪些 瀏覽:314
助聽器插片式編程線如何連接 瀏覽:293
怎麼刪除系統休眠文件 瀏覽:914
搜索文件內容中包含的文字並替換 瀏覽:542
微信相冊程序圖標 瀏覽:714
win8怎麼顯示文件格式 瀏覽:547
文件伺服器中毒 瀏覽:721
如何修改網站訪問次數 瀏覽:518
mdfldf是什麼文件 瀏覽:569
文件在桌面怎麼刪除干凈 瀏覽:439
馬蘭士67cd機版本 瀏覽:542
javaweb爬蟲程序 瀏覽:537
word中千位分隔符 瀏覽:392
迷你編程七天任務的地圖怎麼過 瀏覽:844
word2003格式不對 瀏覽:86

友情鏈接