一、直接使用 :
// 输出到项目文件夹下 output1.txt 文件中 //////////////////////////////////////////////////////////////4) 정보가 있습니다 - 여기 정보가 있습니다. 치명적인 ////////////////////////////////////////test; import org.apache.log4j.level; import org.apache.log4j.logger; import org.apache.log4j.simplelayout; import org.apache SIMPANDFILE {STATIC LOGGER LOGGER = LOGGER.GETLOGGER (SIMPANDFILE.CLASS); public static void main (String Args []) {SimplelAyout 레이아웃 = new SimplelAyout (); fileappender appender = null; try {appender = new fileappender (레이아웃, "output1.txt", false); } catch (예외 e) {} logger.adappender (appender); logger.setlevel ((레벨) 레벨.); logger.debug ( "여기에 디버그가 있습니다"); logger.info ( "여기에 정보가 있습니다"); logger.warn ( "여기에 경고가 있습니다"); logger.error ( "여기에 오류가 있습니다"); logger.fatal ( "여기에 치명적입니다"); }} // r output2.htmlpackage hunnu.sanha.sanha.sanha.test; import java.io.*; import org.apache.log4j.log4j.level; import org.apache.log4j.logger; import org.apache.log4j.htmllayout; import org.apache.log4j.writerappender; Logger logger = logger.getLogger (htmlandwrite.class); public static void main (String args []) {htmllayout 레이아웃 = new htmllayout (); WriteRpender Appender = NULL; {fileoutputStream output = new FileOutputStream ( "output2.html"); Appender = New WriteRappender (레이아웃, 출력); } catch (예외 e) {} logger.adappender (appender); logger.setlevel ((레벨) 레벨.); logger.debug ( "여기에 디버그가 있습니다"); logger.info ( "여기에 정보가 있습니다"); logger.warn ( "여기에 경고가 있습니다"); logger.error ( "여기에 오류가 있습니다"); logger.fatal ( "여기에 치명적입니다"); }} //////////////////////////////////////////////////////////////////////////////////////////////////4 onst 프로그램 시작 : 0className의 발신자 : hunnu.sanha.test.ConsandPattDate in ISO8601 형식 : 2008-07-29 11 : 02 : 30,578 로그 이벤트의 위치 : hunnu.sanha.test.consandpatt.main (consandpatt.java:20) 메시지 : 여기서 15 주가 이후 Debug Milliseconds의 일부 프로그램입니다. 발신자 : hunnu.sanha.test.consandpattdate in iso8601 형식 : 2008-07-29 11 : 02 : 30,593의 위치 : hunnu.sanha.test.consandpatt.main (consandpatt.java:21) 메시지 : 여기에 일부 정보 Milliseconds Program : 15Classname of Celler의 15classname. hunnu.sanha.test.consandpattdate iso8601 형식 : 2008-07-29 11 : 02 : 30,593의 로그 이벤트 : hunnu.sanha.test.consandpatt.main (consandpatt.java:22) 메시지 : 여기 이후 일부 전쟁 밀리 초. hunnu.sanha.test.consandpattdate iso8601 형식 : 2008-07-29 11 : 02 : 30,593 로그 이벤트 : hunnu.sanha.test.consandpatt.main (consandpatt.java:23) 메시지 : 여기 이후 일부 오류 밀리 초. hunnu.sanha.test.consandpattdate iso8601 형식 : 2008-07-29 11 : 02 : 30,593의 로그 이벤트 : hunnu.sanha.test.consandpatt.main (consandpatt.java:24) 메시지 : 여기 몇 가지가 있습니다. 치명적인 /////////////////////////////////////////////////////////////test; org.apache.log4j.patternlayout; import org.apache.log4j.consoleappender; public class consandpatt {static logger = logger.getlogger (consandpatt.class); public static void main (String Args []) {// 참고, %n은 프로그램 시작 이후 밀리 초입니다 : %r %n "; Pattern += "발신자의 클래스 이름 : %c %n"; 패턴 += "ISO8601의 날짜 형식 : %d {iso8601} %n"; 패턴 += "로그의 위치 : %l %n"; 패턴 += "메시지 : %m %n %n"; PatternLayout 레이아웃 = New PatternLayout (Pattern); ConsolePender Appender = New ConsolePender (레이아웃); logger.adappender (Appender); logger.setlevel ((레벨) 레벨.); logger.debug ( "여기에 디버그가 있습니다"); logger.info ( "여기에 정보가 있습니다"); logger.warn ( "여기에 경고가 있습니다"); logger.error ( "여기에 오류가 있습니다"); logger.fatal ( "여기에 치명적입니다"); }}二、使用配置文件) (都直接放到项目文件夹下)
//xmllog4jconfig.xml<?xml version = "1.0"encoding = "utf-8"?> <! doctype log4j : configuration system "log4j.dtd"> <log4j : configuration xmlns : log4j = "http://jakarta.apache.org/"> applender 4j/ "> applender 4j/"> 이름 = "파일"value = "indentify-log.txt"/> <param name = "append"value = "false"/<layout> <param name = "converionPattern"value = "%d [%t]%p-%m%n"/> </layout> </appender> <root> <priority value = "debug"/>> </root> </log4j : configuration> //externalxmltest.java 패키지 hunnu.sanha.external; import org.apache.log4j.logger; import org.apache.log4j.xml.domconfigureator; public class externalxmltest {logger.getlogger (externalxmlt.); public static void main (String args []) {domconfigurator.configure ( "xmllog4jconfig.xml"); logger.debug ( "여기에 디버그가 있습니다"); logger.info ( "여기에 정보가 있습니다"); logger.warn ( "여기에 경고가 있습니다"); logger.error ( "여기에 오류가 있습니다"); logger.fatal ( "여기에 치명적입니다"); }} //} intentify-log.txt 文件中 2008-07-29 10 : 48 : 11,375 [Main] 디버그-여기에 일부 디버그 2008-07-29 10 : 48 : 11,375 [Main] 정보는 다음과 같습니다. 여기에 일부 정보가 있습니다. 10 : 48 : 11,375 [메인] 오류 - 여기에 오류가 있습니다. 오류가 있습니다. blahlog4j.appender.blah = org.apache.log4j.consoleappender# semplelayoutlog4j.appender.blah.layout = org.apache.log4j.simplelayout //externalplaintest.javapackage hunnu.sanger; org org.log.log.log 4j. org.apache.log4j.propertyconfigurator; public class externallaintest {static logger = logger.getLogger (externalPlaintest.class); public static void main (String args []) {propertyconfigurator.configure ( "plainLog4jConfig.txt"); logger.debug ( "여기에 디버그가 있습니다"); logger.info ( "여기에 정보가 있습니다"); logger.warn ( "여기에 경고가 있습니다"); logger.error ( "여기에 오류가 있습니다"); logger.fatal ( "여기에 치명적입니다"); }} //} 디버그 - 여기에 약간의 디버그 인포가 있습니다 - 여기에 몇 가지 정보가 있습니다 - 여기에 약간의 전쟁이 있습니다 - 여기에 약간의 오류가 있습니다 - 여기에 치명적인 것이 있습니다.附加 :
2.1. 日志信息的优先级
分为 OFF al 치명적 、 오류 、 warn 、 정보 、 정보 디버그 、 all 或者您定义的级别。
log4j , ,, 优先级从高到低分别是 오류 、 warn 、 、 정보 、 Debug 。通过在这里定义的级别, 您可以控制到应用程序中相应级别的日志信息的开关。
假如在一个级别为 q ger 로거 中发生一个级别为 p 的日志请求, 如果 p> = q, 那么请求将被启用。这是 log4j 的核心原则。
짐
2.2. 输出源的使用
有选择的能用或者禁用日志请求仅仅是 log4j jlog4j 允许日志请求被输出到多个输出源。用 log4j 的话说, 一个输出源被称做一个 appender。
Appender 包括 Console 최고 (控制台), 파일 (控制台), GUI 구성 요소 (图形的组件), 원격 소켓 서버 (Socket 服务), jms (Java 信息服务), NT 이벤트 로거 (NT 的事件日志) 및 원격 UNIX SYSLOG DAEMONS (远程 UNIX 的后台日志服务) 。它也可以做到异步记录。
一个 로거 可以设置超过一个的 appender。
用 addappender ender appender 到一个给定的 로저 。对于一个给定的 로거 它每个生效的日志请求都被转发到该 로거 所有的 appender 上和该 logger 的父辈 logger 的 appender 上。
2.2.1. ConsoleAppender
ConsoLeAppender, 那么 로그 信息将写到 콘솔 。效果等同于直接把信息打印到 。效果等同于直接把信息打印到 System.out 上了。
2.2.2. Fileappender
使用 fileappender, 那么 log 信息将写到指定的文件中。这应该是比较经常使用到的情况。
相应地, 在配置文件中应该指定 로그 输出的文件名。如下配置指定了 로그 文件名为 dglog.txt
log4j.appender.a2.file = dglog.txt
注意将 a2 替换为具体配置中 appender 的别名。
2.2.3. DailyrollingAppender
Fileappender eap 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
# 최대 로그 파일 크기를 제어합니다
log4j.appender.r.maxfilesize = 100kb
# 아카이브 로그 파일 (여기에 백업 파일 하나)
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. 레이아웃 的配置
레이아웃 指定了 로그 指定了
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 输出优先级, 输出优先级 디버그, 정보, 경고, 오류, 치명적입니다
%r 输出自应用启动到输出该 log 输出自应用启动到输出该
%c 输出所属的类目, 输出所属的类目
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符, Windows "rn", Unix 平台为 "n"
%d 输出日志时间点的日期或时间, 输出日志时间点的日期或时间 iso8601, 也可以在其后指定格式, 也可以在其后指定格式 :%d {yyy mmm dd hh : mm : ss, sss}}, 输出类似 : 2002 年 10 ℃ 22 : 10 : 28,921
비
2.3.3. 例子
例子 1 : : 로그 信息
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 : 49 : 42,866 Select * from hole where 1 = 1 Creadate desc의 순서
例子 2 : : 로그 发生地方和 로그 信息
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.WOAA.SYSTEM.SYSTEM.DAO.ROLEDAO.SELECT (ROLEDAO.JAVA:409) "#"
선택 *에서 1 = 1 순서가 생성 된 DESC를 선택하십시오.
例子 3 : : log 级别, 时间, 调用方法, 로그 信息
log4j.appender.a2.layout = org.apache.log4j.patternlayout
log4j.appender.a2.layout.conversionpattern = [ %-5p] %d {yyyy-mm-dd hh : mm : ss, sss}
방법 :%l%n%m%n
로그 信息 :
[디버그] 2002-11-12 12 : 00 : 57,376
방법 : cn.net.unet.woa.system.dao.roledao.select (roledao.java:409)
선택 *에서 1 = 1 순서가 생성 된 DESC를 선택하십시오.
2.4. 配置文件的例子 :
log4j.rootlogger = 디버그
#dao o log 记录到 daolog, alllog 中
log4j.logger.dao = debug, a2, a4
#l log 记录到 비즈니스 로그, 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- 打印到文件 daolo 中- 专门为 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}
방법 :%l%n%m%n
#a3-- 打印到文件 비즈니스 로그 中- 专门记录逻辑处理层服务 로그 信息
log4j.appender.a3 = org.apache.log4j.dailyrollingfileappender
log4j.appender.a3.file = 비즈니스 로그
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}
방법 :%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}
방법 :%l%n%m%n
以上这篇浅谈在 Java a log4j 的使用就是小编分享给大家的全部内容了, 希望能给大家一个参考, 也希望大家多多支持武林网。 也希望大家多多支持武林网。