事件输出log4j学习笔记
首先声明,我是一个菜鸟。一下文章中出现技术误导情况盖不负责
1. log4j的一些基本概念
1.1 Logger
- static Level DEBUG
- static Level INFO
- static Level WARN
- static Level ERROR
- static Level FATAL
另外,还有两个可用的特殊的日记记录级别:
- static Level ALL
- static Level OFF
Logger logger = Logger.getLogger(MyClass.class);用上面方法设置级别:
logger.setLevel((Level)Level.WARN);日记记录器(Logger)将只输出那些级别高于或等于它的级别的信息。
1.2 Appender
-
ConsoleAppender:应用用户指定的布局(layout) 输出日记事件到System.out或者 System.err。默认的目标是System.out。
-
DailyRollingFileAppender 扩展FileAppender,因此多个日记文件可以以一个用户选定的频率停止循环日记记录。
-
FileAppender 把日记事件写入一个文件
-
RollingFileAppender 扩展FileAppender备份容量到达一定巨细的日记文件。
-
WriterAppender根据用户的选择把日记事件写入到Writer或者OutputStream。
-
SMTPAppender 当特定的日记事件发生时,一般是指发生错误或者严重错误时,发送一封邮件。
-
SocketAppender 给远程日记服务器(通常是网络套接字节点)发送日记事件(LoggingEvent)对象。
-
SocketHubAppender 给远程日记服务器群组(通常是网络套接字节点)发送日记事件(LoggingEvent)对象。
-
SyslogAppender给远程异步日记记录的后台精灵程序(daemon)发送消息。
-
TelnetAppender 一个专用于向只读网络套接字发送消息的log4j appender。
1.3 Layout
-
HTMLLayout 格式化日记输出为HTML表格。
-
PatternLayout 根据指定的 转换模式格式化日记输出,或者如果没有指定任何转换模式,就应用默认的转换模式。
-
SimpleLayout 以一种非常简单的方式格式化日记输出,它打印级别 Level,然后随着一个破折号“-“ ,最后才是日记消息。
以上三段对log4j的介绍,出自http://blog.csdn.net/wlq1983/article/details/2827638
2. log4j的典范应用
2.1 简单日记写入文件
import org.apache.log4j.Appender; import org.apache.log4j.FileAppender; import org.apache.log4j.Layout; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.apache.log4j.SimpleLayout; public class Simpandfile { static Logger logger = Logger.getLogger(Simpandfile.class); public static void main(String args[]) { Layout layout = new SimpleLayout(); Appender appender = null; try { appender = new FileAppender(layout, "MyLog.log", false);//false表现不追加写日记 //在控制台输出log信息 //appender = new ConsoleAppender(layout,ConsoleAppender.SYSTEM_ERR); logger.addAppender(appender); logger.setLevel((Level) Level.DEBUG); int i = 1/0; } catch (Exception e) { e.printStackTrace(); logger.error(e.getMessage(),e); } } }
2.2 RollingFileAppender
import org.apache.log4j.Logger; import org.apache.log4j.xml.DOMConfigurator; import java.net.URL; public class InitUsingXMLPropertiesFile implements Runnable { private static Logger logger = Logger.getLogger(InitUsingXMLPropertiesFile.class); //构造函数,初始化log4j public InitUsingXMLPropertiesFile(){ String resource = "logConfiguration.xml"; URL configFileResource = InitUsingXMLPropertiesFile.class.getResource(resource); DOMConfigurator.configure(configFileResource.getFile()); } public static void main(String argv[]) { InitUsingXMLPropertiesFile initUsingXMLPropertiesFile = new InitUsingXMLPropertiesFile(); initUsingXMLPropertiesFile.write(); } public static void write() { // Add a bunch of logging statements ... logger.debug("Hello, my name is Homer Simpson."); logger.info("We are the Simpsons!"); logger.warn("Mmm...forbidden donut."); logger.error("Dear Baby, Welcome to Dumpsville. Population: you."); try { int i=1/0; } catch (Exception e) { // TODO: handle exception logger.error(e.getMessage(),e); } } }
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd"> <log4j:configuration> <appender name="DailyRollingFileAppender" class="org.apache.log4j.DailyRollingFileAppender"> <!-- 配置日记记录文件 --> <param name="File" value="Indentify-Log.txt"/> <param name="DatePattern" value="'.'yyyy-MM-dd-HH-mm"/> <param name="Append" value="false"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{yyyy-MM-dd HH\:mm\:ss,SSS} [%p] - %m%n"/> </layout> </appender> <root> <priority value ="debug" /> <appender-ref ref="DailyRollingFileAppender"/> </root> </log4j:configuration>
log4j输出格式控制: http://dolphin-ygj.iteye.com/blog/312504
文章结束给大家分享下程序员的一些笑话语录:
古鸽是一种搜索隐禽,在中国快绝迹了…初步的研究表明,古鸽的离去,很可能导致另一种长着熊爪,酷似古鸽,却又习性不同的猛禽类——犤毒鸟
---------------------------------
原创文章 By
事件和输出
---------------------------------