事件输出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
事件和输出
---------------------------------

浙公网安备 33010602011771号