一、直接使用 :
//输出到项目文件夹下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; importar org.apache.log4j.logger; importar org.apache.log4j.simplelayout; import org.apache.log4j.fileAppender; public class Simpandfile {logger estaticista = logger.getLogger (simpandfile.cleSs; public static void main (string args []) {simplElayout diseño = new SimpleLayOut (); FileAppender Appender = NULL; intente {appender = new FleApeppender (diseño, "output1.txt", falso); } catch (excepción e) {} logger.addappender (appender); logger.setLevel ((nivel) nivel.); logger.debug ("Aquí está algo de depuración"); logger.info ("Aquí hay alguna información"); logger.warn ("Aquí hay alguna advertencia"); logger.error ("Aquí hay algún error"); logger.fatal ("Aquí está algo fatal"); }} // 按格式输出到项目文件夹下 output2.htmlpackage hunnu.sanha.test; import java.io.*; Importar org.apache.log4j.level; importar org.apache.log4j.logger; importar org.apache.log4j.htmllayout; importar orgger logger = logger.getLogger (htmlandwrite.class); public static void main (string args []) {htmllayout diseño = new htmllayout (); WriterAppender Appender = NULL; intente {FileOutputStream output = new FileOutputStream ("output22.html"); appender = new WriterAppender (diseño, salida); } catch (excepción e) {} logger.addappender (appender); logger.setLevel ((nivel) nivel.); logger.debug ("Aquí está algo de depuración"); logger.info ("Aquí hay alguna información"); logger.warn ("Aquí hay alguna advertencia"); logger.error ("Aquí hay algún error"); logger.fatal ("Aquí está algo fatal"); }} //输出到控制台////////////////////////////////////////////////////////////////////////////////////////////////////////////Milliseconds since Inicio del programa: 0ClassName of Caller: hunnu.sanha.test.consandpattdate en ISO8601 Formato: 2008-07-29 11: 02: 30,578location of log Event: hunnu.sanha.test.consandpatt.main (Consandpatt.Java:20) Mensaje: Aquí está algunos debug MillisEconds: 15ClassName: 15 Cloass. Caller: hunnu.sanha.test.consandpattdate en ISO8601 Formato: 2008-07-29 11: 02: 30,593location of Log Event: hunnu.sanha.test.consandpatt.main (consandpatt.Java:21) Mensaje: Aquí hay algunas información MilliseConds desde el programa de inicio: 15Classname de Caller de Caller: hunnu.sanha.test.consandpattdate in iso8601 Formato: 2008-07-29 11: 02: 30,593location of log Event: hunnu.sanha.test.consandpatt.main (consandpatt.java:22) Mensaje: Aquí hay algunos accesorios de Warn Millises desde el programa de inicio: 15Classname of caller: hunnu.sanha.test.consandpattdate en formato iso8601: 2008-07-29 11: 02: 30,593location of log evento: hunnu.sanha.test.consandpatt.main (consandpatt.java:23) Mensaje: Aquí hay algunos errores de milisco desde el programa de inicio del programa: 15ClassName of caller: hunnu.sanha.test.consandpattdate en formato iso8601: 2008-07-29 11: 02: 30,593location of log evento: hunnu.sanha.test.consandpatt.main (consandpatt.java:24) Mensaje: Aquí está algunos Fatal /////////////////////////////////////////////////////// paquete hunnu.sanha.test; import org.apache.log4j.patternlayout; import org.apache.log4j.consoleppender; public class ConsandPatt {static logger logger = logger.getlogger (consultypatt.class); Public static void main (String args []) {// nota, %n es nueva línea de string patrón = "milisegundos desde que el programa comienza: %r %n"; Patrón += "ClassName of Caller: %C %N"; Patrón += "Fecha en formato ISO8601: %D {ISO8601} %N"; Patrón += "Ubicación del evento de registro: %l %n"; Patrón += "Mensaje: %M %N %N"; PatternLayout Layout = New PatternLayout (Patrón); ConsolePeppender appender = new ConsoleAppender (diseño); logger.addappender (appender); logger.setLevel ((nivel) nivel.); logger.debug ("Aquí está algo de depuración"); logger.info ("Aquí hay alguna información"); logger.warn ("Aquí hay alguna advertencia"); logger.error ("Aquí hay algún error"); logger.fatal ("Aquí está algo fatal"); }}二、使用配置文件(都直接放到项目文件夹下)
//xmllog4jconfig.xml<?xml versión = "1.0" encoding = "utf-8"?> <! DocType log4j: sistema de configuración "log4j.dtd"> <log4j: configuración xmlns: log4j = "http://jakarta.apache.org/Log4j/" <Appender n. name = "file" valor = "indentify-log.txt"/> <param name = "append" value = "false"/> <leut> <param name = "conversionPathern" value = "%d [%t]%p-%m%n"/> </lekout> </papender> <ade root> <sonity value = "depug"/> <appender-ref ref = "appender"/>>> </root> </log4j: configuración> //externalxmltest.java paquete hunnu.sanha.external; import org.apache.log4j.logger; importar org.apache.log4j.xml.domconfigurator; public class Externutionxmltest {logger de logger = logger. public static void main (string args []) {domconfigurator.configure ("xmllog4jconfig.xml"); logger.debug ("Aquí está algo de depuración"); logger.info ("Aquí hay alguna información"); logger.warn ("Aquí hay alguna advertencia"); logger.error ("Aquí hay algún error"); logger.fatal ("Aquí está algo fatal"); }} // 结果输出到 Indentify-log.txt 文件中 2008-07-29 10: 48: 11,375 [Main] Debug-Aquí hay un debug2008-07-29 10: 48: 11,375 [Main] Información: aquí está algunas información 2008-07-29 10: 48: 11,375 [Main] Warn-Aquí está un Warn2008-07-07-29-29 10: 48: 11,375 [principal] Error: aquí hay algún error2008-07-29 10: 48: 11,375 [Main] fatal - Aquí hay un fatal // sencillo de sílig4jconfig.txt# Inicialize Root Logger con depuración de nivel y llamarlo blahlog4j.rootlogger = debug, blah# agregar un consolador a la loggorger a la logger loggerger a la logger loggerger a la logger loggerger a la loggor Blahlog4j.appender.blah = org.apache.log4j.consoleppender# Establezca que el diseño sea simplyLayoutlog4j.appender.blah.layout = org.apache.log4j.simplelayout //externalPlaintest.Javapackage hunnu.sanha.External; import og.apache.Log4j.LOG2 org.apache.log4j.propertyconfigurator; public class externalPlaintest {static logger = logger.getLogger (externalPlaintest.class); public static void main (string args []) {PropertyConfigurator.Configure ("PlainLog4jconfig.txt"); logger.debug ("Aquí está algo de depuración"); logger.info ("Aquí hay alguna información"); logger.warn ("Aquí hay alguna advertencia"); logger.error ("Aquí hay algún error"); logger.fatal ("Aquí está algo fatal"); }} // 结果输出到控制台 DEBUG - Aquí hay algunos debuginfo - Aquí hay algo de infowarn - Aquí hay algo de warnerger - aquí hay un error de error - aquí hay algo fatal附加 :
2.1. 日志信息的优先级
分为 Off 、 Fatal 、 Error 、 Advertencia 、 Información 、 Debug 、 Todos 或者您定义的级别。
Log4j 建议只使用四个级别 , 优先级从高到低分别是 Error 、 Warn 、 Info 、 Debug 。通过在这里定义的级别 您可以控制到应用程序中相应级别的日志信息的开关。 您可以控制到应用程序中相应级别的日志信息的开关。
假如在一个级别为 Q 的 Logger 中发生一个级别为 P 的日志请求 , 如果 P> = Q, 那么请求将被启用。这是 Log4j 的核心原则。
比如在这里定义了 Información 级别 级别 则应用程序中所有 Debug 级别的日志信息将不被打印出来;
2.2. 输出源的使用
有选择的能用或者禁用日志请求仅仅是 log4j 的一部分功能。log4j 允许日志请求被输出到多个输出源。用 log4j 的话说 , 一个输出源被称做一个 Appender。
Appender 包括 Console (控制台), archivos (文件), componentes de la GUI (图形的组件), servidores de socket remotos (Socket 服务), JMS (Java 信息服务), NT Event Loggers (NT 的事件日志) y Daemons de Syslog Unix remoto (远程 UNIX 的后台日志服务)。它也可以做到异步记录。
一个 Logger 可以设置超过一个的 Appender。
用 AddAppender 方法添加一个 Appender 到一个给定的 Logger 。对于一个给定的 Logger 它每个生效的日志请求都被转发到该 Logger 所有的 Appender 上和该 Logger 的父辈 Logger 的 Appender 上。
2.2.1. Consoleeportista
如果使用 ConsolePepsender , 那么 Log 信息将写到 Consola 。效果等同于直接把信息打印到 System.Out 上了。
2.2.2. Fileapeprender
使用 FileApeppender , 那么 Log 信息将写到指定的文件中。这应该是比较经常使用到的情况。
相应地 , 在配置文件中应该指定 在配置文件中应该指定 log 输出的文件名。如下配置指定了 log 文件名为 dgglog.txt
log4j.appender.a2.file = dglog.txt
注意将 A2 替换为具体配置中 Appender 的别名。
2.2.3. Dailyrollingappender
使用 FileApeppender 可以将 log 信息输出到文件中 , 但是如果文件太大了读起来就不方便了。这时就可以使用 DailyrollingAppender。DailyRollingAppender 可以把 log 信息输出到按照日期来区分的文件中。配置文件就会每天产生一个 log 文件 , 每个 log 文件只记录当天的 log 信息 :
log4j.appender.a2 = org.apache.log4j.dailyrollingfilePeppender
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.rollingfilePeppers
文件大小到达指定尺寸的时候产生一个新的文件。
log4j.appender.r = org.apache.log4j.rollingfilePepsender
log4j.appender.r.file = ../logs/dglog.log
# Controle el tamaño máximo del archivo de registro
log4j.appender.r.maxfilesize = 100kb
# Archivo de archivos de registro (un archivo de copia de seguridad aquí)
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 会自动把 Ejemplo.log 重命名为 dglog.log.1 , 然后重建一个新的 dgglog.log 文件 , 依次轮转。
2.2.5. org.apache.log4j.WriterAppender
将日志信息以流格式发送到任意指定的地方。
2.3. Diseño 的配置
Diseño 指定了 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 输出优先级 , 即 即 depuración , info, advertir, 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 * DESDE DE COLO DONDE 1 = 1 PEDIDO POR CREITARIO 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) "#"
Seleccione * del rol donde 1 = 1 orden por creative desc
例子 3 : 显示 log 级别, 时间, 调用方法, log 信息
log4j.appender.a2.layout = org.apache.log4j.patternlayout
log4j.appender.a2.Layout.conversionPattern = [ %-5p] %d {aaa yyyy-mm-dd hh: mm: ss, sss}
Método:%l%n%m%n
Log 信息:
[Decreno] 2002-11-12 12: 00: 57,376
Método: cn.net.unet.weboa.system.dao.roledao.select (roledao.java:409)
Seleccione * del rol donde 1 = 1 orden por creative 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.dailyrollingfilePeppender
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 {aaa yyyy-mm-dd hh: mm: ss, sss}
Método:%l%n%m%n
#A3-- 打印到文件 BusinessLog 中-专门记录逻辑处理层服务 Log 信息
log4j.appender.a3 = org.apache.log4j.dailyrollingfilePeppers
log4j.appender.a3.file = BusinessLog
log4j.appender.a3.datepattern = '.' aaa yyyy-mm-dd
log4j.appender.a3.layout = org.apache.log4j.patternlayout
log4j.appender.a3.layout.conversionPattern = [ %-5p] %d {yyyyy-mm-dd hh: mm: ss, sss}
Método:%l%n%m%n
#A4-- 打印到文件 Alllog 中-记录所有 Log 信息
log4j.appender.a4 = org.apache.log4j.dailyrollingfilePeppers
log4j.appender.a4.file = alllog
log4j.appender.a4.datePattern = '.'a yyyy-mm-dd
log4j.appender.a4.layout = org.apache.log4j.patternlayout
log4j.appender.a4.layout.conversionPattern = [ %-5p] %d {yyyyy-mm-dd hh: mm: ss, sss}
Método:%l%n%m%n
以上这篇浅谈在 java 项目中 log4j 的使用就是小编分享给大家的全部内容了 , 希望能给大家一个参考 也希望大家多多支持武林网。