一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|

服務器之家 - 編程語言 - JAVA教程 - 淺談在JAVA項目中LOG4J的使用

淺談在JAVA項目中LOG4J的使用

2020-07-11 15:19jingxian JAVA教程

下面小編就為大家帶來一篇淺談在JAVA項目中LOG4J的使用。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

一、直接使用:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
//輸出到項目文件夾下output1.txt文件中
 
//////////////////////////////
 
// DEBUG - Here is some DEBUG
 
// INFO - Here is some INFO
 
// WARN - Here is some WARN
 
// ERROR - Here is some ERROR
 
// FATAL - Here is some FATAL
 
//////////////////////////////
 
package hunnu.sanha.test;
 
import org.apache.log4j.Level;
 
import org.apache.log4j.Logger;
 
import org.apache.log4j.SimpleLayout;
 
import org.apache.log4j.FileAppender;
 
public class Simpandfile {
 
 static Logger logger = Logger.getLogger(Simpandfile.class);
 
 public static void main(String args[]) {
 
  SimpleLayout layout = new SimpleLayout();
 
  FileAppender appender = null;
 
  try {
 
   appender = new FileAppender(layout,"output1.txt",false);
 
  } catch(Exception e) {}
 
  logger.addAppender(appender);
 
  logger.setLevel((Level) Level.);
 
  logger.debug("Here is some DEBUG");
 
  logger.info("Here is some INFO");
 
  logger.warn("Here is some WARN");
 
  logger.error("Here is some ERROR");
 
  logger.fatal("Here is some FATAL");
 
 }
 
}
 
 
 
//按格式輸出到項目文件夾下output2.html
 
package hunnu.sanha.test;
 
import java.io.*;
 
import org.apache.log4j.Level;
 
import org.apache.log4j.Logger;
 
import org.apache.log4j.HTMLLayout;
 
import org.apache.log4j.WriterAppender;
 
public class Htmlandwrite {
 
 static Logger logger = Logger.getLogger(Htmlandwrite.class);
 
 public static void main(String args[]) {
 
  HTMLLayout layout = new HTMLLayout();
 
  WriterAppender appender = null;
 
  try {
 
   FileOutputStream output = new FileOutputStream("output2.html");
 
   appender = new WriterAppender(layout,output);
 
  } catch(Exception e) {}
 
  logger.addAppender(appender);
 
  logger.setLevel((Level) Level.);
 
  logger.debug("Here is some DEBUG");
 
  logger.info("Here is some INFO");
 
  logger.warn("Here is some WARN");
 
  logger.error("Here is some ERROR");
 
  logger.fatal("Here is some FATAL");
 
 }
 
}
 
 
 
 
 
//輸出到控制臺
 
////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
Milliseconds since program start: 0
 
Classname of caller: hunnu.sanha.test.Consandpatt
 
Date in ISO8601 format: 2008-07-29 11:02:30,578
 
Location of log event: hunnu.sanha.test.Consandpatt.main(Consandpatt.java:20)
 
Message: Here is some DEBUG
 
 
 
Milliseconds since program start: 15
 
Classname of caller: hunnu.sanha.test.Consandpatt
 
Date in ISO8601 format: 2008-07-29 11:02:30,593
 
Location of log event: hunnu.sanha.test.Consandpatt.main(Consandpatt.java:21)
 
Message: Here is some INFO
 
 
 
Milliseconds since program start: 15
 
Classname of caller: hunnu.sanha.test.Consandpatt
 
Date in ISO8601 format: 2008-07-29 11:02:30,593
 
Location of log event: hunnu.sanha.test.Consandpatt.main(Consandpatt.java:22)
 
Message: Here is some WARN
 
 
 
Milliseconds since program start: 15
 
Classname of caller: hunnu.sanha.test.Consandpatt
 
Date in ISO8601 format: 2008-07-29 11:02:30,593
 
Location of log event: hunnu.sanha.test.Consandpatt.main(Consandpatt.java:23)
 
Message: Here is some ERROR
 
 
 
Milliseconds since program start: 15
 
Classname of caller: hunnu.sanha.test.Consandpatt
 
Date in ISO8601 format: 2008-07-29 11:02:30,593
 
Location of log event: hunnu.sanha.test.Consandpatt.main(Consandpatt.java:24)
 
Message: Here is some FATAL
 
///////////////////////////////////////////////////////
 
package hunnu.sanha.test;
 
import org.apache.log4j.Level;
 
import org.apache.log4j.Logger;
 
import org.apache.log4j.PatternLayout;
 
import org.apache.log4j.ConsoleAppender;
 
public class Consandpatt {
 
 static Logger logger = Logger.getLogger(Consandpatt.class);
 
 public static void main(String args[]) {
 
  // Note, %n is newline
 
  String pattern = "Milliseconds since program start: %r %n";
 
    pattern += "Classname of caller: %C %n";
 
    pattern += "Date in ISO8601 format: %d{ISO8601} %n";
 
    pattern += "Location of log event: %l %n";
 
    pattern += "Message: %m %n %n";
 
  
 
  PatternLayout layout = new PatternLayout(pattern);
 
  ConsoleAppender appender = new ConsoleAppender(layout);
 
  logger.addAppender(appender);
 
  logger.setLevel((Level) Level.);
 
  logger.debug("Here is some DEBUG");
 
  logger.info("Here is some INFO");
 
  logger.warn("Here is some WARN");
 
  logger.error("Here is some ERROR");
 
  logger.fatal("Here is some FATAL");
 
 }
 
}

二、使用配置文件(都直接放到項目文件夾下)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
//xmllog4jconfig.xml
 
<?xml version="1.0" encoding="UTF-8" ?>
 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
 
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
 
 <appender name="appender" class="org.apache.log4j.FileAppender">
 
  <param name="File" value="Indentify-Log.txt"/>
 
  <param name="Append" value="false"/>
 
  <layout class="org.apache.log4j.PatternLayout">
 
  <param name="ConversionPattern" value="%d [%t] %p - %m%n"/>
 
  </layout>
 
 </appender>
 
 <root>
 
  <priority value ="debug"/>
 
  <appender-ref ref="appender"/>
 
 </root>
 
</log4j:configuration>
 
 
 
//Externalxmltest.java
 
 package hunnu.sanha.external;
 
import org.apache.log4j.Logger;
 
import org.apache.log4j.xml.DOMConfigurator;
 
public class Externalxmltest {
 
 static Logger logger = Logger.getLogger(Externalxmltest.class);
 
 public static void main(String args[]) {
 
  DOMConfigurator.configure("xmllog4jconfig.xml");
 
  logger.debug("Here is some DEBUG");
 
  logger.info("Here is some INFO");
 
  logger.warn("Here is some WARN");
 
  logger.error("Here is some ERROR");
 
  logger.fatal("Here is some FATAL");
 
 }
 
}
 
//結果輸出到Indentify-Log.txt文件中
 
2008-07-29 10:48:11,375 [main] DEBUG - Here is some DEBUG
 
2008-07-29 10:48:11,375 [main] INFO - Here is some INFO
 
2008-07-29 10:48:11,375 [main] WARN - Here is some WARN
 
2008-07-29 10:48:11,375 [main] ERROR - Here is some ERROR
 
2008-07-29 10:48:11,375 [main] FATAL - Here is some FATAL
 
 
 
 
 
// plainlog4jconfig.txt
 
# initialise root logger with level DEBUG and call it BLAH
 
log4j.rootLogger=DEBUG, BLAH
 
# add a ConsoleAppender to the logger BLAH
 
log4j.appender.BLAH=org.apache.log4j.ConsoleAppender
 
# set set that layout to be SimpleLayout
 
log4j.appender.BLAH.layout=org.apache.log4j.SimpleLayout
 
 
 
//Externalplaintest.java
 
package hunnu.sanha.external;
 
import org.apache.log4j.Logger;
 
import org.apache.log4j.PropertyConfigurator;
 
public class Externalplaintest {
 
 static Logger logger = Logger.getLogger(Externalplaintest.class);
 
 public static void main(String args[]) {
 
  PropertyConfigurator.configure("plainlog4jconfig.txt");
 
  logger.debug("Here is some DEBUG");
 
  logger.info("Here is some INFO");
 
  logger.warn("Here is some WARN");
 
  logger.error("Here is some ERROR");
 
  logger.fatal("Here is some FATAL");
 
 }
 
}
 
//結果輸出到控制臺
 
DEBUG - Here is some DEBUG
 
INFO - Here is some INFO
 
WARN - Here is some WARN
 
ERROR - Here is some ERROR
 
FATAL - Here is some FATAL

附加:

2.1.   日志信息的優先級

分為OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定義的級別。
Log4j建議只使用四個級別,優先級從高到低分別是ERROR、WARN、INFO、DEBUG。通過在這里定義的級別,您可以控制到應用程序中相應級別的日志信息的開關。
假如在一個級別為q的Logger中發生一個級別為p的日志請求,如果p>=q,那么請求將被啟用。這是Log4j的核心原則。
比如在這里定義了INFO級別,則應用程序中所有DEBUG級別的日志信息將不被打印出來;

2.2.   輸出源的使用

有選擇的能用或者禁用日志請求僅僅是Log4j的一部分功能。Log4j允許日志請求被輸出到多個輸出源。用Log4j的話說,一個輸出源被稱做一個Appender。
Appender包括console(控制臺), files(文件), GUI components(圖形的組件), remote socket servers(socket 服務), JMS(java信息服務), NT Event Loggers(NT的事件日志), and remote UNIX Syslog daemons(遠程UNIX的后臺日志服務)。它也可以做到異步記錄。
一個logger可以設置超過一個的appender。
用addAppender 方法添加一個appender到一個給定的logger。對于一個給定的logger它每個生效的日志請求都被轉發到該logger所有的appender上和該logger的父輩logger的appender上。

2.2.1.  ConsoleAppender


如果使用ConsoleAppender,那么log信息將寫到Console。效果等同于直接把信息打印到System.out上了。

2.2.2.  FileAppender

使用FileAppender,那么log信息將寫到指定的文件中。這應該是比較經常使用到的情況。
相應地,在配置文件中應該指定log輸出的文件名。如下配置指定了log文件名為dglog.txt
log4j.appender.A2.File=dglog.txt
注意將A2替換為具體配置中Appender的別名。

2.2.3.  DailyRollingAppender

使用FileAppender可以將log信息輸出到文件中,但是如果文件太大了讀起來就不方便了。這時就可以使用DailyRollingAppender。DailyRollingAppender可以把Log信息輸出到按照日期來區分的文件中。配置文件就會每天產生一個log文件,每個log文件只記錄當天的log信息:
log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A2.file=dglog
log4j.appender.A2.DatePattern='.'yyyy-MM-dd
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern= %5r %-5p %c{2} - %m%n

2.2.4.  org.apache.log4j.RollingFileAppender


文件大小到達指定尺寸的時候產生一個新的文件。
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File= ../logs/dglog.log
# Control the maximum log file size
log4j.appender.R.MaxFileSize=100KB
# Archive log files (one backup file here)
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
這個配置文件指定了輸出源R,是一個輪轉日志文件。最大的文件是100KB,當一個日志文件達到最大尺寸時,Log4J會自動把example.log重命名為dglog.log.1,然后重建一個新的dglog.log文件,依次輪轉。

2.2.5.  org.apache.log4j.WriterAppender

將日志信息以流格式發送到任意指定的地方。

2.3.  Layout的配置

Layout指定了log信息輸出的樣式。

2.3.1.  布局樣式

org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以靈活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的級別和信息字符串),
org.apache.log4j.TTCCLayout(包含日志產生的時間、線程、類別等等信息)

2.3.2.  格式


%m 輸出代碼中指定的消息
%p 輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL
%r 輸出自應用啟動到輸出該log信息耗費的毫秒數
%c 輸出所屬的類目,通常就是所在類的全名
%t 輸出產生該日志事件的線程名
%n 輸出一個回車換行符,Windows平臺為"rn",Unix平臺為"n"
%d 輸出日志時間點的日期或時間,默認格式為ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},輸出類似:2002年10月18日 22:10:28,921
%l 輸出日志事件的發生位置,包括類目名、發生的線程,以及在代碼中的行數。舉例:Testlog4.main(Test Log4.java:10)

2.3.3.  例子

例子1:顯示日期和log信息
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %m%n
打印的信息是:
2002-11-12 11:49:42,866 SELECT * FROM Role WHERE 1=1 order by createDate desc

例子2:顯示日期,log發生地方和log信息
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %l "#" %m%n
2002-11-12 11:51:46,313 cn.net.unet.weboa.system.dao.RoleDAO.select(RoleDAO.java:409) "#"
SELECT * FROM Role WHERE 1=1 order by createDate desc 
 
例子3:顯示log級別,時間,調用方法,log信息
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS}
method:%l%n%m%n
log信息:
[DEBUG] 2002-11-12 12:00:57,376
method:cn.net.unet.weboa.system.dao.RoleDAO.select(RoleDAO.java:409)
SELECT * FROM Role WHERE 1=1 order by createDate desc

2.4.   配置文件的例子:

log4j.rootLogger=DEBUG
#將DAO層log記錄到DAOLog,allLog中
log4j.logger.DAO=DEBUG,A2,A4
#將邏輯層log記錄到BusinessLog,allLog中
log4j.logger.Businesslog=DEBUG,A3,A4

#A1--打印到屏幕上
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-5p [%t] %37c %3x - %m%n

#A2--打印到文件DAOLog中--專門為DAO層服務
log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A2.file=DAOLog
log4j.appender.A2.DatePattern='.'yyyy-MM-dd
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS}
method:%l%n%m%n

#A3--打印到文件BusinessLog中--專門記錄邏輯處理層服務log信息
log4j.appender.A3=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A3.file=BusinessLog
log4j.appender.A3.DatePattern='.'yyyy-MM-dd
log4j.appender.A3.layout=org.apache.log4j.PatternLayout
log4j.appender.A3.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS}
method:%l%n%m%n

#A4--打印到文件alllog中--記錄所有log信息
log4j.appender.A4=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A4.file=alllog
log4j.appender.A4.DatePattern='.'yyyy-MM-dd
log4j.appender.A4.layout=org.apache.log4j.PatternLayout
log4j.appender.A4.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS}
method:%l%n%m%n

以上這篇淺談在JAVA項目中LOG4J的使用就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本红色高清免费观看 | 国产另类视频一区二区三区 | 娇妻在床上迎合男人 | 久久re这里精品23 | 欧美激烈精交gif动态图18p | 男人的天堂久久爱 | www青青草原 | 肉大捧一进一出视频免费播放 | 国产欧美一区二区三区久久 | 亚洲一级特黄 | 国产91精品在线观看 | 日日爱爱 | 日韩免费在线观看 | 精品国产美女AV久久久久 | 农村美女沟厕嘘嘘被偷看 | 亚洲另类第一页 | 3d动漫美女被吸乳羞羞视频 | 欧美成人中文字幕在线看 | www.大逼色| free性丰满hd性欧美厨房 | 国产精品色爱综合网 | 国产欧美日韩视频在线观看一区二区 | 92国产福利久久青青草原 | 农夫色综合 | fuqer老师| 6080窝窝理论 | 高h折磨调教古代 | 114级毛片免费观看 1024亚洲天堂 | 日韩欧美视频二区 | 高清国产激情视频在线观看 | 赤坂丽女医bd无删减在线观看 | 九九九九九九 | bbbxxx乱大交欧美小说 | 男人扒开女人下身添 | 人性本色| 性做久久久久久久久老女人 | 国内自拍成人网在线视频 | 精品国产成a人在线观看 | 久久成人永久免费播放 | 亚洲va欧美va天堂v国产综合 | 唯美清纯 自拍偷 |