激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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的使用就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久99久久98精品免观看软件 | 成人区一区二区三区 | 精品国产乱码久久久久久久久 | www.48xx.com| 久久精品国产99久久久古代 | 国产资源在线免费观看 | 欧美一区二区精品夜夜嗨 | 欧美一级黄色免费 | 91免费电影 | 亚洲特黄a级毛片在线播放 激情视频免费看 | h视频在线免费看 | arabxxxxvideos| 久久99国产精品免费网站 | 国产一区在线免费 | 成人黄色短视频在线观看 | 国产高清一区 | 超碰97国产在线 | 国产精品自拍片 | 99精品国产视频 | 国产女厕一区二区三区在线视 | 成人在线观看免费高清 | 免费一级欧美在线观看视频 | 色a综合| 视频一区 中文字幕 | 国语自产免费精品视频在 | 成年免费视频黄网站在线观看 | 成人毛片网 | 成熟女人特级毛片www免费 | 欧美成人se01短视频在线看 | 成人一级黄色 | 欧美a在线 | 色妞色视频一区二区三区四区 | 91av久久| 91极品视频在线观看 | 成人久久久精品乱码一区二区三区 | 宅男噜噜噜66国产免费观看 | 午夜视频国产 | 国产成人强伦免费视频网站 | 成人偷拍片视频在线观看 | 亚洲国产超高清a毛毛片 | 精品中文字幕视频 |