.PatternLayout
#log4j.appender.fileAppender.layout.ConversionPattern=%d [%t] %-5p %.16c - %m%n
#对Appender consoleAppender(输出到控制台)进行设置
log4j.appender.consoleAppender=org.apache.log4j.ConsoleAppender
# 这是一个控制台类型的Appender
log4j.appender.consoleAppender.layout=org.apache.log4j.PatternLayout
# 输出格式(layout)为PatternLayout
log4j.appender.consoleAppender.layout.ConversionPattern=%d [%t] %-5p %.16c - %m%n
代码:
#include "stdafx.h"
#include "log4cxx/logger.h"
#include "log4cxx/PropertyConfigurator.h"
using namespace std;
using namespace log4cxx;
using namespace log4cxx::helpers;
int main()
{
//用指定的文件加载配制
log4cxx::PropertyConfigurator::configure("E:/Test/log4cxx.properties");
//创建logger
LoggerPtr logger = Logger::getLogger("test");
//输出DEBUG级别的日志
LOG4CXX_DEBUG(logger, "debug log");
//输出TRACE级别的日志
LOG4CXX_TRACE(logger, "debug log");
//输出INFO级别的日志
LOG4CXX_INFO(logger, "info log");
//输出WARN级别的日志
LOG4CXX_WARN(logger, "debug log");
//输出ERROR级别的日志
LOG4CXX_ERROR(logger, "debug log");
//输出FATAL级别的日志
LOG4CXX_FATAL(logger, "debug log");
//ASSERT判断条件是否正确, 条件为false时,输出信息
LOG4CXX_ASSERT(logger, 1 == 2, "1 == 2");
return 0;
}
Java中的log:
Java中给项目程序添加log主要有三种方式,一使用JDK中的java.util.logging包,一种是log4j,一种是commons-logging。其中log4j和commons-logging都是apache软件基金会的开源项目。这三种方式的区别如下:
Java.util.logging,JDK标准库中的类,是JDK 1.4 版本之后添加的日志记录的功能包。
log4j,最强大的记录日志的方式。可以通过配置 .properties 或是 .xml 的文件, 配置日志的目的地,格式等等。
commons-logging,最综合和常见的日志记录方式,是Java中的一个日志接口,一般会与log4j一起使用。自带SimpleLog可用于日志记录。
1.Java.util.logging
【例1.1】:日志的简单使用
package lwf.log.test;
import java.util.logging.Logger;
public class LogTest {
static String strClassName = LogTest.class.getName();
static Logger logger = Logger.getLogger(strClassName);
public static double division(int value1, int value2) {
double result = 0;
try {
result = value1 / value2;
} catch(ArithmeticException e) {
logger.warning("除数不能为0.");
e.printStackTrace();
}
return result;
}
public static void main(String[] args) {
System.out.println(division(5, 0));
}
}
结果:
从这个例子中你会看到控制台上输出了日期时间,类名,方法名和“[warning]除数不能为0.”的信息。
Logger是Java Logging API中的一个类,Logger.getLogger方法创建了一个Logger实例。每一个Logger实例都必须有个名称,通常的做法是使用类名称定义Logger实例。
logger.warning方法用来输出日志信息,除了warning处,还有severe、info等。我们可以把【例1】再改一下,让其输出各种日志信息。
【例1.2】:日志的级别
public static double division(int value1, int value2) {
double result = 0;
try {
result = value1 / value2;
} catch(ArithmeticException e) {
logger.severe("[severe]除数不能为0.");
logger.warning("[warning]除数不能为0.");
logger.info("[info]除数不能为0.");
logger.config("[config]除数不能为0.");
logger.fine("[fine]除数不能为0.");
logger.finer("[finer]除数不能为0.");
logger.finest("[finest]除数不能为0.");
e.printStackTrace();
}
return result;
}
结果:

Java Logging API提供了七个日志级别用来控制输出。这七个级别分别是:
级别 |
SEVERE |
WARNING |
INFO |
CONFIG |
FINE |
FINER |
FINEST |
调用方法 |
severe() |
warning() |
info() |
config() |
fine() |
finer() |
finest() |
含意 |
严重 |
警告 |
信息 |
配置 |
良好 |
较好 |
最好 |
但在上面的例子中我们可以看到只输出了SEVERE、WARNING、INFO三个等级的日志,并没有如我们相像中的好样输出各个级别的日志信息。这是因为默认日志输出级别的设置是info,也就是说只有info或它以上的级别被输出,它以下的级别不被输出。那如何修改这个设置呢?
日志(Log)的配制:
1.代码设置
使用setLevel();但这种方式不能改变console的级别,只能改变输出到文件的日志