4.1.2. HTMLLayout 和 WriterAppender
import java.io.*;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.HTMLLayout;
import org.apache.log4j.WriterAppender;
public class htmlandwrite {
static Logger logger = Logger.getLogger(htmlandwrite.class);
public static void main(String args[]) {
HTMLLayout layout = new HTMLLayout();
WriterAppender appender = null;
try {
FileOutputStream output = new FileOutputStream("output2.html");
appender = new WriterAppender(layout,output);
} catch(Exception e) {}
logger.addAppender(appender);
logger.setLevel((Level) Level.DEBUG);
logger.debug("Here is some DEBUG");
logger.info("Here is some INFO");
logger.warn("Here is some WARN");
logger.error("Here is some ERROR");
logger.fatal("Here is some FATAL");
}
}
4.1.3. PatternLayout and ConsoleAppender
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.ConsoleAppender;
public class consandpatt {
static Logger logger = Logger.getLogger(consandpatt.class);
public static void main(String args[]) {
// Note, %n is newline
String pattern = "Milliseconds since program start: %r %n";
pattern += "Classname of caller: %C %n";
pattern += "Date in ISO8601 format: %d{ISO8601} %n";
pattern += "Location of log event: %l %n";
pattern += "Message: %m %n %n";
PatternLayout layout = new PatternLayout(pattern);
ConsoleAppender appender = new ConsoleAppender(layout);
logger.addAppender(appender);
logger.setLevel((Level) Level.DEBUG);
logger.debug("Here is some DEBUG");
logger.info("Here is some INFO");
logger.warn("Here is some WARN");
logger.error("Here is some ERROR");
logger.fatal("Here is some FATAL");
}
}
4.2 使用配置文件来定义输出Appender和布局格式Layout
log4j支持两种方式的配置方式,.properties 二进制文件和xml文件的方式。我们简单讲一下.properties的配
置方式后,将主要讨论xml文件的配置方式。
4.2.1 我们将以.properties文件的格式定义两种输出方式,一种是输出到文件中,另一种是输出到数据库中
。
首先定义simple.properties文件,文件定义如下:
#定义了两个输出端
log4j.rootLogger = INFO,f,db
# 定义f输出到文件,并且文件是随着大小而增加的
log4j.appender.f = org.apache.log4j.RollingFileAppender
log4j.appender.f.File = F:\\nepalon\\classes\\test1.log
log4j.appender.f.MaxFileSize = 1000KB
log4j.appender.f.MaxBackupIndex = 3
log4j.appender.f.layout = org.apache.log4j.PatternLayout
log4j.appender.f.layout.ConversionPattern = %d{yyyy-MM-dd hh:mm:ss}:%p %t %c - %m%n
#定义db输出到数据库
log4j.appender.db = org.apache.log4j.jdbc.JDBCAppender
log4j.appender.db.BufferSize = 40
log4j.appender.db.Driver = com.microsoft.jdbc.sqlserver.SQLServerDriver
log4j.appender.db.URL = jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=test
log4j.appender.db.User = sa
log4j.appender.db.Password =
log4j.appender.db.layout = org.apache.log4j.PatternLayout
log4j.appender.db.layout.ConversionPattern = INSERT INTO log4j (createDate, thread, priority,
category, message) values(%d{ISO8601}, %t, %-5p, %c, %m)
然后程序中将引用这配置文件。定义如下:
import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;
public class Test {
static Logger logger = Logger.getLogger(Test.class);
public static void main(String args[]) {
//以property方式读到配置文件。
PropertyConfigurator.configure ( "simple.properties" ) ;
logger.debug("Here is some DEBUG");
logger.info("Here is some INFO");
logger.warn("Here is some WARN");
logger.error("Here is some ERROR");
logger.fatal("Here is some FATAL");
}
}
4.2.2 以xml配置
程序如下:
import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;
public class Test {
static Logger logger = Logger.getLogger(Test.class);
public static void main(String args[]) {
//以XML方式读到配置文件。
DOMConfigurator.configure("xmllog4jconfig.xml");
logger.debug("Here is some DEBUG");
logger.info("Here is some INFO");
logger.warn("Here is some WARN");
logger.error("Here is some ERROR");
logger.fatal("Here is some FATAL");
}
}