C++、Java、JavaScript中的日志(log)

configure-aprutil.bat,解决的方法有以下几种:1.下载一个),再运行

projects/log4cxx.dsw,在打开的时候会依次要求你选择apache-log4cxx-0.10.0的子目录中找到对应的

,日志信息会在命令行中输出。

#include "stdafx.h"#include "log4cxx/logger.h"#include "log4cxx/basicconfigurator.h"#include "log4cxx/helpers/exception.h"using namespace std;using namespace log4cxx;using namespace log4cxx::helpers;int main(){//@todo 重定向到文件LoggerPtr logger(Logger::getLogger("LogTest"));//初始化配制BasicConfigurator::configure();//输出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;}

<2>.设置配制文件:

如果要将日志信息输出到文件,或同时输出到命令行和文件,则要修改配制文件。

log4cxx.properties:

# 设置root logger为DEBUG级别,,使用了ca和fa两个Appenderlog4j.rootLogger=DEBUG, consoleAppender, fileAppender#对Appender fileAppender(输出到文件)进行设置:# 这是一个文件类型的Appender,log4j.appender.fileAppender=org.apache.log4j.FileAppender# 将日志信息输出到./log4cxxTest.log,log4j.appender.fileAppender.File=./log4cxxTest.log# 输出方式为文件末尾追加log4j.appender.fileAppender.Append=true# 设置输出格式(layout)为PatternLayoutlog4j.appender.fileAppender.layout=org.apache.log4j.PatternLayout#log4j.appender.fileAppender.layout.ConversionPattern=%d [%t] %-5p %.16c – %m%n#对Appender consoleAppender(输出到控制台)进行设置log4j.appender.consoleAppender=org.apache.log4j.ConsoleAppender# 这是一个控制台类型的Appenderlog4j.appender.consoleAppender.layout=org.apache.log4j.PatternLayout# 输出格式(layout)为PatternLayoutlog4j.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");//创建loggerLoggerPtr 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;}

log4j,一种是commons-logging。其中都是

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));}}结果:

info

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;}结果:

package lwf.log.test;import java.io.IOException;import java.io.InputStream;import java.util.logging.FileHandler;import java.util.logging.Handler;import java.util.logging.Level;import java.util.logging.LogManager;import java.util.logging.LogRecord;import java.util.logging.Logger;import java.util.logging.SimpleFormatter;public class LogTest {static String strClassName = LogTest.class.getName();static Logger logger = Logger.getLogger(strClassName);static LogManager logManager = LogManager.getLogManager();static {InputStream inputStream = null;try {//读取配制文件inputStream = LogTest.class.getClassLoader().getResourceAsStream("log.properties");logManager.readConfiguration(inputStream);//添加LoggerlogManager.addLogger(logger);} catch (SecurityException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}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;}public static void main(String[] args) {System.out.println(division(5, 0));}}

3.在项目代码中适当添加日志。

【例2.1】

log4j.properties:

#setloglevel:showdebug,info,error

log4j.rootLogger=DEBUG,A1

#A1issettobeaConsoleAppenderwhichoutputstoSystem.out.

#log4j.appender.A1=org.apache.log4j.ConsoleAppender

log4j.appender.A1=org.apache.log4j.FileAppender

#A1usesPatternLayout.

log4j.appender.A1.layout=org.apache.log4j.PatternLayout

#out

log4j.appender.A1.File=E:/test/log4j.log

#setlogoutputformat’sstyle

log4j.appender.A1.layout=org.apache.log4j.TTCCLayout

有我们特有的记忆,亲情之忆友谊之花爱情之树以及遗憾之泪!

C++、Java、JavaScript中的日志(log)

相关文章:

你感兴趣的文章:

标签云: