一、直接使用
//输出到项目文件夹下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; importar org.apache.log4j.level; importar org.apache.log4j.logger; importar org.apache.log4j.simplelayout; importfile.apache.log4j.fileppender; classe pública SimPandfile {STATTGGER LOGGERGGER = Logger =; public static void main (string args []) {SimpleLayout layout = new SimleLayout (); FileAppender Appender = NULL; tente {Appender = new FileAppender (layout, "output1.txt", false); } catch (Exceção e) {} logger.addappender (appender); logger.setLevel ((nível).); Logger.debug ("Aqui está algum depuração"); Logger.info ("Aqui estão algumas informações"); Logger.warn ("Aqui está algum aviso"); Logger.error ("Aqui está algum erro"); Logger.Fatal ("Aqui está um pouco fatal"); }} // 按格式输出到项目文件夹下 output2.htmlpackage hunnu.sanha.test; importar java.io. logger = logger.getLogger (htmlandwrite.class); public static void main (string args []) {htmllayout layout = new htmllayout (); WriterAppender Appender = NULL; tente {fileOutputStream output = new FileOutputStream ("output2.html"); Appender = new WriterAppender (layout, saída); } catch (Exceção e) {} logger.addappender (appender); logger.setLevel ((nível).); Logger.debug ("Aqui está algum depuração"); Logger.info ("Aqui estão algumas informações"); Logger.warn ("Aqui está algum aviso"); Logger.error ("Aqui está algum erro"); Logger.Fatal ("Aqui está um pouco fatal"); }} //输出到控制台////////////////////////////////////////////////////////////////////////////////////////////////////////////Milliseconds since Iniciar do programa: 0ClassName of Caller: hunnu.sanha.test.consandpattdate no ISO8601 Formato: 2008-07-29 11: 02: 30.578 Localização do evento de log: hunnu.sanha.test.ConsAnd.Main (constandpatt.Java:20) Caller: hunnu.sanha.test.consandpattdate In ISO8601 Formato: 2008-07-29 11: 02: 30.593 Localização do evento de registro: hunnu.sanha.test.consandpatt.main (Constandpatt.Java:21) Mensagem: aqui é alguns informações. hunnu.sanha.test.consandpattdate no formato ISO8601: 2008-07-29 11: 02: 30.593 Localização do evento: hunnu.sanha.test.consandpatt.main (consandpatt.java:22) Mensagem: aqui é alguns milliseconds. hunnu.sanha.test.consandpattdate no formato ISO8601: 2008-07-29 11: 02: 30.593 Localização do evento: hunnu.sanha.test.consandpatt.main (consandpatt.java:23) Mensagem: aqui é algum erro milliseconds. hunnu.sanha.test.consandpattdate no formato ISO8601: 2008-07-29 11: 02: 30.593 Localização do evento: hunnu.sanha.test.consandpatt.Main (Constandpatt.java:24) Fatal ////////////////////////////////////////////////////////////cplacas org.apache.log4j.patternlayout; importar org.apache.log4j.consoleppender; public class public static void main (string args []) {// Nota, %n é newline string padrony = "milissegundos desde o início do programa: %r %n"; padrão += "ClassName of Caller: %c %n"; padrão += "Data no formato ISO8601: %D {ISO8601} %N"; padrão += "Localização do evento de log: %L %n"; padrão += "mensagem: %m %n %n"; PatternLayout layout = new PatternLayout (padrão); Appender do consoléppender = new ConsolEppender (layout); Logger.addappender (Appender); logger.setLevel ((nível).); Logger.debug ("Aqui está algum depuração"); Logger.info ("Aqui estão algumas informações"); Logger.warn ("Aqui está algum aviso"); Logger.error ("Aqui está algum erro"); Logger.Fatal ("Aqui está um pouco fatal"); }}二、使用配置文件 (都直接放到项目文件夹下)
//xmllog4jconfig.xml<?xml versão = "1.0" Encoding = "utf-8"?> <! name = "arquivo" value = "indentify-log.txt"/> <param name = "append" value = "false"/> <layout> <param name = "conversionPattern" value = "%d [%t]%p-%m%n"/> </Layout> </appender> <sicha> <prioridade "/" depuG "/> </root> </log4j: Configuration> //externalxmltest.java pacote hunnu.sanha.external; importar org.apache.log4j.logger; import org.apache.log4j.xml.domconfigurger; publict class; public static void main (string args []) {domonfigurator.configure ("xmlLog4jconfig.xml"); Logger.debug ("Aqui está algum depuração"); Logger.info ("Aqui estão algumas informações"); Logger.warn ("Aqui está algum aviso"); Logger.error ("Aqui está algum erro"); Logger.Fatal ("Aqui está um pouco fatal"); }} // 结果输出到 Indentify-Log.txt 文件中 2008-07-29 10: 48: 11.375 [Principal] Debug-Aqui estão algumas debug2008-07-29 10: 48: 11.375 [Main] Info-aqui estão algumas informações. 10: 48: 11.375 [principal] Erro - Aqui estão alguns erros2008-07-29 10: 48: 11.375 [Main] Fatal - aqui está um pouco fatal // planLog4jconfig.txt# inicialize o logger com depuração de nível e o consulte e o Blahlog4j.rootLogger = Debug, Blah# BLAHlog4j.appender.BLAH=org.apache.log4j.ConsoleAppender# set set that layout to be SimpleLayoutlog4j.appender.BLAH.layout=org.apache.log4j.SimpleLayout //Externalplaintest.javapackage hunnu.sanha.external;import org.apache.log4j.Logger;import org.apache.log4j.propertyconfigurator; public class EnternalPlaIntest {static logger logger = logger.getLogger (externPlaIntest.class); public static void main (string args []) {PropertyConfigurator.configure ("planLog4jconfig.txt"); Logger.debug ("Aqui está algum depuração"); Logger.info ("Aqui estão algumas informações"); Logger.warn ("Aqui está algum aviso"); Logger.error ("Aqui está algum erro"); Logger.Fatal ("Aqui está um pouco fatal"); }} // 结果输出到控制台 Debug - Aqui está alguns Debuginfo - aqui está um pouco de infowarn - aqui está algum Warnerror - aqui está alguns erros -fatal - aqui está alguns fatais附加
2.1. 日志信息的优先级
分为 OFF 、 FATAL 、 ERRO 、 WARN 、 Info 、 Debug 、 All 或者您定义的级别。
Log4j 建议只使用四个级别 , 优先级从高到低分别是 Erro 、 Warn 、 Info 、 Debug 。通过在这里定义的级别 , 您可以控制到应用程序中相应级别的日志信息的开关。
假如在一个级别为 q 的 logger 中发生一个级别为 p 的日志请求 , 如果 p> = q, 那么请求将被启用。这是 log4j 的核心原则。
比如在这里定义了 Informações 级别 , 则应用程序中所有 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. Consoleppender
如果使用 Consolappender , 那么 log 信息将写到 Console 。效果等同于直接把信息打印到 System.out 上了。
2.2.2. FileAppender
使用 FilePpender , 那么 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.dailyrollingFilePpender
log4j.appender.a2.file = dglog
log4j.appender.a2.datePattern = '.'
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
# Controle o tamanho máximo do arquivo de log
log4j.appender.r.maxfilesize = 100kb
# Arquivo de arquivos de log (um arquivo de backup aqui)
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 会自动把 exemplo.log 重命名为 dglog.log.1 , 然后重建一个新的 dglog.log 文件 , 依次轮转。 依次轮转。
2.2.5. org.apache.log4j.writreppend
将日志信息以流格式发送到任意指定的地方。
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 (包含日志产生的时间、线程、类别等等信息) vor
2.3.2. 格式
%m 输出代码中指定的消息
%P 输出优先级 , 即 Debug , Info , Aviso , Erro , 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 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 Selecione * da função em que 1 = 1 Ordem por 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) "#"
Selecione * da função em que 1 = 1 Ordem por 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}
Método:%L%n%m%n
log 信息:
[Debug] 2002-11-12 12: 00: 57.376
Método: cn.net.unet.weboa.system.dao.roledao.select (roledao.java:409)
Selecione * da função em que 1 = 1 Ordem por 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.consoleppender
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.dailyrollingFilePpender
log4j.appender.a2.file = daolog
log4j.appender.a2.datePattern = '.'
log4j.appender.a2.layout = org.apache.log4j.patternlayout
log4j.appender.a2.layout.conversionPattern = [ %-5p] %d {yyyy-mm-dd hh: mm: ss, sss}
Método:%L%n%m%n
#A3-- 打印到文件 Businesslog 中-专门记录逻辑处理层服务 log 信息
log4j.appender.a3 = org.apache.log4j.dailyrollingFilePpender
log4j.appender.a3.file = Businesslog
log4j.appender.a3.datepattern = '.' Aaaaa-mm-dd
log4j.appender.a3.layout = org.apache.log4j.patternlayout
log4j.appender.a3.layout.conversionPattern = [ %-5p] %d {yyyy-mm-dd hh: mm: ss, sss}
Método:%L%n%m%n
#A4-- 打印到文件 alllog 中-记录所有 log 信息
log4j.appender.a4 = org.apache.log4j.dailyrollingFilePpender
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}
Método:%L%n%m%n
以上这篇浅谈在 java 项目中 log4j 的使用就是小编分享给大家的全部内容了 , 希望能给大家一个参考 , 也希望大家多多支持武林网。