设为首页 加入收藏

TOP

C++、Java、JavaScript中的日志(log)(二)
2015-07-20 17:17:11 来源: 作者: 【 】 浏览:11
Tags:Java JavaScript 日志 log
.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的级别,只能改变输出到文件的日志

首页 上一页 1 2 3 4 下一页 尾页 2/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇leetcode_01_Two sum 下一篇hdu 1072 Nightmare BFS,第一次刷..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Redis on AWS:Elast (2025-12-27 04:19:30)
·在 Spring Boot 项目 (2025-12-27 04:19:27)
·使用华为开发者空间 (2025-12-27 04:19:24)
·Getting Started wit (2025-12-27 03:49:24)
·Ubuntu 上最好用的中 (2025-12-27 03:49:20)