我们正在讨论在我们的系统中实施Log4Net
。
我过去常常使用它,我觉得它很有用,我的朋友问的是,使用它有什么好处,而只是在发生异常时写入我们的数据库?
例如log4net
:
catch (Exception ex)
{
log.Error("UserNamePasswordStatus.NotExist", ex);
}
并使用我们的代码:
catch (Exception ex)
{
_Params.Add("?Exception_", ex);
DataAccessMgr.Instance.ExecProcedure("insert_AppLog", _Params, false);
}
我该怎么回答他? THX
答案 0 :(得分:1)
这是个人选择,但Log4Net
管理登录文件系统(在您的磁盘中),因此,如果您没有DB来记录错误消息,那么您可以选择它。虽然,我在大多数企业应用程序中看到人们选择在数据库中记录错误而不是文件系统中的错误,以便更好地进行审计。
同样,如果你使用NLog
编写的Log4Net
(在NuGet中可用),那么你也可以使用相同的语法在数据库中记录错误。
log.Error("UserNamePasswordStatus.NotExist", ex);
答案 1 :(得分:1)
你可以为写一个文件争论同样的事情......但我相信主要的原因是:如果你可以重用上面的库,为什么要重新发明。
你从简单的“登录”开始到你的数据库...然后你说......嗯...我想添加时间戳,所以你改变你的表...然后你想...知道它来自哪里是有用的...我应该改变我的记录以跟踪那个...然后你说......然后......但是你记得......它继续前进。
就个人而言,我发现NLog
更容易log4net
。关于该项目的更多活动,更多的花里胡哨(这是一篇:how to get started文章)。我真的很喜欢使用记录器,因为我可以将一些消息重定向到一个文件,并有一些消息pop notifications on my desktop by simply configuring the logger。您可以继续使用示例,但是直接写入数据库的重点是什么?
难道你不会开始使用DB包装器,只是为了避免这种情况吗?
答案 2 :(得分:1)
使用Log4Net显然比将日志转储到DB / Event查看器的传统方式更有优势。它可以用较少的号码来实现。大型和小型应用程序的配置步骤。
有趣的是,它可以在每个级别进行自定义,以使其更可靠的日志记录。我喜欢滚动机制的功能(按大小,按日期等)。