c++ - 使用 Log4cxx 记录到 Windows 事件

标签 c++ logging error-logging log4cxx

如何使用 Log4cxx 将日志消息发送到 windows 事件日志

如果我从多个进程执行它,它会是进程安全的吗?

嗯:谢谢 Retired Ninja...是的,它有效...[log4j.properties 文件]

# Set root logger level to DEBUG and its only appender to EVENTLOG.
log4j.rootLogger=DEBUG, EVENTLOG

# EVENTLOG.is set to be a NTEventLogAppender

log4j.appender.EVENTLOG=org.apache.log4j.net.NTEventLogAppender
log4j.appender.EVENTLOG.server=127.0.0.1
log4j.appender.EVENTLOG.source=SomeApp

# EVENTLOG uses PatternLayout.
log4j.appender.EVENTLOG.layout=org.apache.log4j.PatternLayout
log4j.appender.EVENTLOG.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

简单地在代码中使用

 #include "stdafx.h"
#include <windows.h>
#include <log4cxx/logger.h>
#include "log4cxx/propertyconfigurator.h"

using namespace log4cxx;

LoggerPtr logger(Logger::getLogger( "main"));

int  main()
{

    PropertyConfigurator::configure("log4j.properties");


    LOG4CXX_ERROR(logger, "Oh come on be serious");

    system("PAUSE");

    return 0;
}

最佳答案

几年前,我能够使用 log4cxx 版本 0.10.0 做到这一点。我最近没有使用 log4cxx,所以如果它有变化,我深表歉意。

这是我使用的配置:

# EVENTLOG
log4j.appender.EVENTLOG=org.apache.log4j.net.NTEventLogAppender
log4j.appender.EVENTLOG.server=127.0.0.1
log4j.appender.EVENTLOG.source=SomeApp
log4j.appender.EVENTLOG.layout=org.apache.log4j.PatternLayout
log4j.appender.EVENTLOG.layout.ConversionPattern=[%c] %-5p: %m
log4j.appender.EVENTLOG.Threshold=ERROR

关于c++ - 使用 Log4cxx 记录到 Windows 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9015851/

相关文章:

c++ - 不完整类型的嵌套静态 constexpr。 C++ 是否有效?

c++ - LibCurl 如何同时捕获 400,而不是作为 CURLE_HTTP_RETURNED_ERROR 错误的一部分

c++ - Eclipse CDT 中的 POSIX IPC 链接器错误

java - 仅当 JUnit 测试方法失败时,如何使用 SLF4J 记录 Java 中的语句?

logging - 使用 JSON 格式的 log4j 记录 json 字符串消息,而不用引号破坏格式

error-handling - 用什么来记录 Quartz 计划作业中的错误?

c++ - 使用 qt 为发送者和接收者自动生成的 Ui

php 返回 500 错误但没有错误日志

error-logging - Sentry - JavaScript 项目和源映射