當前位置:首頁 » 數據倉庫 » 怎麼配置log4j
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

怎麼配置log4j

發布時間: 2022-03-02 06:07:24

1. bae怎麼配置log4j.properties

# 日誌文件(logFile)
log4j.appender.logFile=org.apache.log4j.FileAppender
log4j.appender.logFile.Threshold=DEBUG
log4j.appender.logFile.ImmediateFlush=true
log4j.appender.logFile.Append=true
log4j.appender.logFile.File=D:/logs/log.log4j
log4j.appender.logFile.layout=org.apache.log4j.PatternLayout
log4j.appender.logFile.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n
# 回滾文件(rollingFile)
log4j.appender.rollingFile=org.apache.log4j.RollingFileAppender
log4j.appender.rollingFile.Threshold=DEBUG
log4j.appender.rollingFile.ImmediateFlush=true
log4j.appender.rollingFile.Append=true
log4j.appender.rollingFile.File=D:/logs/log.log4j
log4j.appender.rollingFile.MaxFileSize=200KB
log4j.appender.rollingFile.MaxBackupIndex=50
log4j.appender.rollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.rollingFile.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n
# 定期回滾日誌文件(dailyFile)
log4j.appender.dailyFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.dailyFile.Threshold=DEBUG
log4j.appender.dailyFile.ImmediateFlush=true
log4j.appender.dailyFile.Append=true
log4j.appender.dailyFile.File=D:/logs/log.log4j
log4j.appender.dailyFile.DatePattern='.'yyyy-MM-dd
log4j.appender.dailyFile.layout=org.apache.log4j.PatternLayout
log4j.appender.dailyFile.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n
# 應用於socket
log4j.appender.socket=org.apache.log4j.RollingFileAppender
log4j.appender.socket.RemoteHost=localhost
log4j.appender.socket.Port=5001
log4j.appender.socket.LocationInfo=true
# Set up for Log Factor 5
log4j.appender.socket.layout=org.apache.log4j.PatternLayout
log4j.appender.socket.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n
# Log Factor 5 Appender
log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender
log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000
# 發送日誌到指定郵件
log4j.appender.mail=org.apache.log4j.net.SMTPAppender
log4j.appender.mail.Threshold=FATAL
log4j.appender.mail.BufferSize=10
log4j.appender.mail.From = [email protected]
log4j.appender.mail.SMTPHost=mail.com
log4j.appender.mail.Subject=Log4J Message
log4j.appender.mail.To= [email protected]
log4j.appender.mail.layout=org.apache.log4j.PatternLayout
log4j.appender.mail.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n
# 應用於資料庫
log4j.appender.database=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.database.URL=jdbc:mysql://localhost:3306/test
log4j.appender.database.driver=com.mysql.jdbc.Driver
log4j.appender.database.user=root
log4j.appender.database.password=
log4j.appender.database.sql=INSERT INTO LOG4J (Message) VALUES('=[%-5p] %d(%r) --> [%t] %l: %m %x %n')
log4j.appender.database.layout=org.apache.log4j.PatternLayout
log4j.appender.database.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n

# 自定義Appender
log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender
log4j.appender.im.host = mail.cybercorlin.net
log4j.appender.im.username = username
log4j.appender.im.password = password
log4j.appender.im.recipient = [email protected]
log4j.appender.im.layout=org.apache.log4j.PatternLayout
log4j.appender.im.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n

log4j的強大功能無可置疑,但實際應用中免不了遇到某個功能需要輸出獨立的日誌文件的情況,怎樣才能把所需的內容從原有日誌中分離,形成單獨的日誌文件呢?其實只要在現有的log4j基礎上稍加配置即可輕松實現這一功能。

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

log4j.rootLogger=DEBUG, stdout, logfile
log4j.category.org.springframework=ERROR
log4j.category.org.apache=INFO

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=${myweb.root}/WEB-INF/log/myweb.log
log4j.appender.logfile.MaxFileSize=512KB
log4j.appender.logfile.MaxBackupIndex=5
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n


如果想對不同的類輸出不同的文件(以cn.com.Test為例),先要在Test.java中定義:

private static Log logger = LogFactory.getLog(Test.class);

然後在log4j.properties中加入:

log4j.logger.cn.com.Test= DEBUG, test
log4j.appender.test=org.apache.log4j.FileAppender
log4j.appender.test.File=${myweb.root}/WEB-INF/log/test.log
log4j.appender.test.layout=org.apache.log4j.PatternLayout
log4j.appender.test.layout.ConversionPattern=%d %p [%c] - %m%n

也就是讓cn.com.Test中的logger使用log4j.appender.test所做的配置。

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

private static Log logger1 = LogFactory.getLog("myTest1");
private static Log logger2 = LogFactory.getLog("myTest2");

然後在log4j.properties中加入:

log4j.logger.myTest1= DEBUG, test1
log4j.appender.test1=org.apache.log4j.FileAppender
log4j.appender.test1.File=${myweb.root}/WEB-INF/log/test1.log
log4j.appender.test1.layout=org.apache.log4j.PatternLayout
log4j.appender.test1.layout.ConversionPattern=%d %p [%c] - %m%n

log4j.logger.myTest2= DEBUG, test2
log4j.appender.test2=org.apache.log4j.FileAppender
log4j.appender.test2.File=${myweb.root}/WEB-INF/log/test2.log
log4j.appender.test2.layout=org.apache.log4j.PatternLayout
log4j.appender.test2.layout.ConversionPattern=%d %p [%c] - %m%n

2. java log4j放在其他目錄怎麼配置

你意思是不是想把log4j的配置文件放在其他目錄,而不是默認目錄?這個需要在web.xml里配置一下

<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>WEB-INF/classes/log4j.properties</param-value>
</context-param>

如果你放在默認目錄里,就不需要這一段,加上這一段,就是認為改變了log4jConfigLocation的值,log4j會在載入的時候去讀取這個變數,如果沒設置過,就會取運行時根目錄作為默認目錄

3. spring如何配置log4j

Spring是可以配置LG4G的,這個完全是可以實現的。

4. log4j 報錯,怎樣修改配置

請帖出配置文件及錯誤日誌。

5. 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在java的web項目中怎麼用的,如何配置等等。。

在web.xml中添加配置:
<!-- 配置log4j配置文件的路徑,可以是xml或 properties(此參數必須配)-->
下面使用了classpath 參數指定log4j.properties文件的位置,這樣log4j的配置文件就不用非要放到src的下面:
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:config/log4j/log4j.properties</param-value>
</context-param>
使用spring的監聽器,當應用啟動時來讀取log4j的配置文件
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

7. 如何在spring 配置文件中配置log4j.xml

比較基本的:
#rootLogger是所有日誌的根日誌,修改該日誌屬性將對所有日誌起作用
#下面的屬性配置中,所有日誌的輸出級別是info,輸出源是console
log4j.rootLogger=info,console
#定義輸出源的輸入位置是控制台
log4j.appender.console=org.apache.log4j.ConsoleAppender
#定義輸出日誌的布局採用的類
log4j.appender.console.layout=org.apache.log4j.PatternLayout
#定義輸出日誌布局
log4j.appender.console.layout.ConversionPattern=%d%p[%c] - %m%n

8. maven 怎樣配置log4j

1. 如果你使用 log4j 1.x 版本 這么配置


<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>



2. 如果你使用 log4j 2.x 版本 這么配置


		<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.6.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.6.2</version>
</dependency>

9. 怎樣添加java的log4j添加到java項目中

首先,弄到log4j的jar包,maven工程配置以下依賴就行,或者,從阿里的maven倉庫下載jar包,添加到工程的「build path」log4j log4j 1.2.17

然後,整一個log4j.properties,內容如下,然後把它放在src/main/java目錄(也就是包所在的根目錄)

1、普通java工程或spring工程

這是最常見的java工程類型,寫demo用的多,把log4j.properties放在src/main/java目錄(也就是包所在的根目錄)就行了

2、spring mvc工程

web工程里用spring mvc構建的比較多了,把log4j.properties放在src/main/resources的conf目錄(web工

程配置文件通常在resources或WEB-INF目錄),編輯web.xml,添加

log4jConfigLocation classpath:/conf/log4j.properties org.springframework.web.util.Log4jConfigListener

3、普通web工程

沒有了spring提供的listener載入log4j.properties,我們要怎麼載入這個文件呢?同樣,把log4j.properties

放在src/main/resources的conf目錄,我們整一個servlet來載入

{ = 1L; publicvoidinit(ServletConfig config)throwsServletException { String prefix =this.getClass().getClassLoader().getResource("/").getPath(); String path = config.getInitParameter("log4j-path"); PropertyConfigurator.configure(prefix + path); } publicvoiddoGet(HttpServletRequest req, HttpServletResponse res)throwsIOException, ServletException {} publicvoiddoPost(HttpServletRequest req, HttpServletResponse res)throwsIOException, ServletException {} publicvoiddestroy() {} }

然後配置servlet隨著web工程啟動而初始化,編輯web.xml,添加

log4j com.xmyself.log4j.Log4jServlet log4j-path conf/log4j.properties 1

看著是不是和spring mvc的很像,甚至你也想到了,普通java工程沒有指定log4j.properties的路徑,那說明

log4j的jar包一定有一個默認的路徑。另外,建議,log4j的配置放在第一個,因為後續載入其他組件就要開始使用日

10. 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
來解決。