为什么使用 Log4Net 而不是只写入我的数据库?

Why using Log4Net instead of just writing to my db?

我们正在讨论在我们的系统中实施 Log4Net。 我曾经使用它并且我认为它很有用,我的朋友问与发生异常时仅写入我们的数据库相比使用它有什么优势?

例如 log4net:

  catch (Exception ex)
            {
                log.Error("UserNamePasswordStatus.NotExist", ex);
            }

以及我们的代码:

  catch (Exception ex)
            {
                _Params.Add("?Exception_", ex);
                DataAccessMgr.Instance.ExecProcedure("insert_AppLog", _Params, false);                
            }

我该怎么回答他? 谢谢

这是个人选择,但 Log4Net 管理登录文件系统(在您的磁盘中),因此如果您没有数据库来记录错误消息,那么您可以使用它。不过,我看到在大多数企业应用程序中,人们选择在数据库中记录错误而不是在文件系统中记录错误,以便更好地进行审计。

同样,如果您使用覆盖 Log4Net(在 NuGet 中可用)的 NLog,那么您也可以使用相同类型的语法在数据库中记录错误。

log.Error("UserNamePasswordStatus.NotExist", ex);

你可能会争论与写入文件相同的事情......但我相信主要原因是:如果你可以重用上述库,为什么要重新发明一些东西。

你从简单的 "logging" 开始到你的数据库......然后你说......嗯......我想添加时间戳,所以你改变你的 table ......然后你想......知道它来自哪里是有用的......我应该改变我的日志记录以跟踪那个......然后你说......然后......但是你记得......并且它继续。

就我个人而言,我发现 NLoglog4net 更容易。关于项目的更多 activity,更多花里胡哨的东西(这里有一个:how to get started article). I really like using a logger because then I can redirect some messages to a file, and have some message pop notifications on my desktop by simply configuring the logger。您可以继续使用示例,但是直接写入您的数据库有什么意义?
难道你没有一个数据库包装器来开始,只是为了避免这种情况吗?

与将日志转储到 DB/Event 查看器的传统方式相比,使用 Log4Net 显然有更多优势。它可以用 less no 来实现。大型和小型应用程序的配置步骤。

有趣的一点是,它可以在每个级别进行定制,以使其更可靠地记录日志。我喜欢滚动机制的功能(按大小、按日期等)。