導航:首頁 > 文件類型 > log4j日誌文件名

log4j日誌文件名

發布時間:2024-03-02 13:40:49

1. 如何用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 輸出產生該日誌事件的線程名

2. java log4j日誌文件名稱如何參數化。配置文件中設置的是DailyRollingFileAppende

可以在啟動腳本中設置一個變數,而在日誌的配置文件中就使用該變數。
至於第二點,我不是很了解。感覺可能不會寫了。

3. 如何編寫log4j.properties文件,配置日誌信息

第一步:在工程中加入log4j所使用的jar文件
1:項目 > 屬性 :彈出項目的屬性窗口
2:Java構建路徑>?庫>?添加外部JAR:彈出選擇JAR的窗口
3:通過選擇JAR的窗口,找到log4j-1.2.x.jar,並確認
4:回到項目的屬性窗口,點擊確定
第二步:創建log4j.properties文件
1:選擇欲使用log4j的項目>?右鍵點擊src >?新建>?其他 :彈出選擇向導窗口
2:在選擇向導窗口中,選擇常規?> 文件?> 下一步:彈出新建文件的窗口
3:在新建文件窗口中,輸入文件名log4j.properties ? 完成:創建工作結束
第三步:使用log4j記錄日誌信息
import org.apache.log4j.Logger;
public class Log4j {
public static void main(String[] args) {
Logger logger = Logger.getLogger(AccpTeacherLog4j.class.getName());//獲取日誌記錄器,這個記錄器將負責控制日誌信息
try {
logger.debug("設置教員的編號。");//使用Logger對象的debug、info方法輸出日誌信息
} catch (IllegalArgumentException ex) {
logger.info(ex.getMessage());//使用Logger對象的debug、info方法輸出日誌信息
}
}
}
第四步:編寫log4j.properties文件,配置日誌信息
### 把日誌信息輸出到控制台 ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender//日誌信息將寫到控制台
log4j.appender.stdout.Target=System.out//信息列印到System.out上
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %m%n//指定輸出格式:顯示日期和log信息
### 把日誌信息輸出到文件:accp.log ###
log4j.appender.file=org.apache.log4j.FileAppender//日誌信息將寫到文件中
log4j.appender.file.File=accp.log//指定日誌輸出的文件名
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l %m%n//指定輸出格式:顯示日期,日誌發生位置和日誌信息
### 設置優先順序別、以及輸出源 ###
log4j.rootLogger=debug, stdout, file//設置優先順序別為debug、
日誌被輸出到多個輸出源
註:優先順序從高到低分別是ERROR、WARN、INFO、DEBUG
在此處,如果優先順序別設為info,那麼使用debug方法列印的日誌信息將不被輸出

4. JAVA的log4j如何實現程序重新啟動會自動生成新的日誌文件,文件名可以是當前日期

log4j輸出日誌文件時以當前日期為文件名

在初始化日誌配置後加入以下代碼:
Java代碼 Appender appender = LogManager.getLoggerRepository().getRootLogger().getAppender("A2"); if(appender instanceof FileAppender) { FileAppender fileAppender = (FileAppender)appender; fileAppender.setFile( "log/" + DateUtil.getFormatDate() + ".log"伍老輪); fileAppender.activateOptions(); } //DateUtil.getFormatDate();是指得到腔信當前格式化後的日期

要是通過配置生成日期是含慶不可能的

5. java 如何配置log4j日誌文件保存路徑

以DailyRollingFileAppender 為例:假設每天一個日誌文件
有以下設置:

log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File=app.log
log4j.appender.A1.DatePattern='.'yyyy-MM-dd
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d %5p - %c -%-4r [%t] - %m%n

此時生成日誌文件將位於tomcat的bin目錄下,如要將日誌文件保存在 :根目錄/web-info/logs/下,個人有以下4種解決方案:
1 絕對路徑
log4j.appender.A1.File=D:\apache-tomcat-6.0.18/webapps/項目/WEB-INF/logs/app.log
但這種寫法靈活性很差

以下3中使用相同的設置原理: jvm的環境變數
2:spring的Log4jConfigListener
通過以下配置:
< context-param>
<param-name>webAppRootKey</param-name>
<param-value>webApp.root</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.properties</param-value>
</context-param>
< listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
...
log4j.appender.logfile.File=${webApp.root}/WEB-INF/logs/app.log
...
來解決
2:使用已有jvm變數:
例如:
log4j.appender.logfile.File=${user.home}/logs/app.log
日誌將位於:例如windows:C:\Documents and Settings\joe\logs\app.log

3 自己設置目錄,也就是在項目啟動時通過System.setProperty設置
通過實現ServletContextListener來解決:例如

public class log4jlistener implements ServletContextListener {
public static final String log4jdirkey = "log4jdir";
public void contextDestroyed(ServletContextEvent servletcontextevent) {
System.getProperties().remove(log4jdirkey);
}
public void contextInitialized(ServletContextEvent servletcontextevent) {
String log4jdir = servletcontextevent.getServletContext().getRealPath("/");
//System.out.println("log4jdir:"+log4jdir);
System.setProperty(log4jdirkey, log4jdir);
}
}
web.xml配置:

<listener>
<listener-class>com.log4j.log4jlistener</listener-class>
</listener>

log4j.prtperties 配置:
log4j.appender.A1.File=${log4jdir}/WEB-INF/logs/app1.log
來解決。

6. 如何使用log4j,讓生成的日誌文件以當天日期為名稱

log4j輸出日誌文件時以當前日期為文件名

在初始化日誌配置後加入以下代碼:
Java代碼 Appender appender = LogManager.getLoggerRepository().getRootLogger().getAppender("A2"); if(appender instanceof FileAppender) { FileAppender fileAppender = (FileAppender)appender; fileAppender.setFile( "log/" + DateUtil.getFormatDate() + ".log"); fileAppender.activateOptions(); } //DateUtil.getFormatDate();是指得到當前格式化後的日期

要是通過配置生成日期是不可能的

閱讀全文

與log4j日誌文件名相關的資料

熱點內容
java實現銀行業務管理軟體 瀏覽:130
小學生怎麼賺微信零錢 瀏覽:701
開平網站推廣多少錢 瀏覽:268
uefi硬碟啟動安裝win10系統 瀏覽:115
怎麼自己用編程製作植物大戰僵屍 瀏覽:989
有肉的玄幻小說 瀏覽:31
win7如何設置文件夾背景 瀏覽:670
秋瓷炫劇情電影 瀏覽:335
韓劇之大尺度的電影 瀏覽:452
高圓圓古樂天電影 瀏覽:767
江山電影院的今日電影 瀏覽:172
哪個小說app可以看完美 瀏覽:692
餓了么舊版本app 瀏覽:153
陸離穿越小說全文免費閱讀 瀏覽:269
學網站編程軟體有哪些 瀏覽:902
java18 瀏覽:942
什麼app可以記錄運動行程 瀏覽:182
怎麼在國外網站付款 瀏覽:970
筆記本怎樣強制開機密碼 瀏覽:683

友情鏈接