【问题标题】:newbie question on win32 app log关于win32应用日志的新手问题
【发布时间】:2011-05-30 20:59:41
【问题描述】:

我是 Visual Studio Win32 (C++) 应用程序的新手
在我工作的 java 中,使用 log4j 进行日志记录很容易。
在 Win32 应用程序中如何进行日志记录?
我见过一些使用宏写入文件的代码。
我是否负责创建一些日志记录机制?
有没有标准的方式登录win32?

谢谢

【问题讨论】:

    标签: windows visual-studio winapi win32-process


    【解决方案1】:

    使用事件日志 API 写入 Windows 事件日志 http://msdn.microsoft.com/en-us/library/aa385772(v=vs.85).aspx

    【讨论】:

    • 这种方法比写入属于应用程序的文件更好吗?我的意思是它是 Win32 应用程序中的常用方法吗?
    【解决方案2】:

    另一种方法是使用 log4net,因为你有 log4j 的经验,有非常相似的。

    【讨论】:

    • 我问是因为我不知道这个。Win32项目app可以用吧?
    【解决方案3】:

    “Windows 应用程序”并不意味着什么,Java 应用程序也可以在 Windows 上运行。有 log4net 可以将日志记录添加到 .NET 应用程序。 Log4cxx 为用 C++ 编写的应用程序这样做。与 log4j 完全相同的方法。项目主页is here.

    【讨论】:

    • 对,我是对的。如发布的那样,log4cxx 可帮助您将日志记录添加到 C++ 应用程序。
    【解决方案4】:

    这取决于谁将使用您的软件的日志记录工具:

    • 如果您正在编写需要 IT 支持部门支持的服务或“系统”类型的任务,则最好使用 Windows 事件日志 API。 Windows 支持工具支持远程访问系统事件日志以创建系统健康警报等。

    除此之外,Windows 没有方便的 Logging API。因此,如果系统事件日志不合适,您需要自行滚动。

    • 对于开发人员/调试目的,OutputDebugString 将向调试器的“输出”窗口发出文本。

    • 在编写GUI应用程序时,方便调试构建一个控制台应用程序,以便在GUI之外显示一个控制台窗口。 printf() 可以向控制台显示消息。

    • 否则,我在 windows 上构建的一些 OSS 项目确实包含已移植到 windows 的 log4c 变体。因此,如果您确实需要 log4c,可以强制它在 Windows 上工作。

    【讨论】:

    • 我需要编写的应用程序必须在后台执行特定的操作,并且通过消息框与用户的交互最少(例如,安装了 X 应用程序,您要继续吗?等)。所以我没有要显示的实际 GUI 或要输出的控制台。我目前正在处理的代码是使用一些宏将信息输出到文件中。但是该代码不适合,因为它是从其他已经使用过它的应用程序中复制粘贴的(即它已经过测试)。问题是它有一个很多东西我不需要,而且我不喜欢宏。那么你提到的log4c适合我吗?
    • wrt 适用于 Log4c:这取决于所使用的跟踪宏。如果它们是自定义的,则无论如何您都需要编写自己的包装器。如果它们是 Log4x“兼容”的,那么集成 log4c 似乎是可行的方法。
    猜你喜欢
    • 1970-01-01
    • 2011-02-01
    • 2011-02-17
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    • 2012-09-30
    • 2011-11-11
    • 1970-01-01
    相关资源
    最近更新 更多