gpt4 book ai didi

nhibernate - NHibernate 如何实现可选的 log4net 日志记录

转载 作者:行者123 更新时间:2023-12-04 22:49:29 27 4
gpt4 key购买 nike

我记得 log4net 与 NH 一起出现并且对于 OR-Mapper 是强制性的那些日子(真的是不久前)。现在它不再是强制性的,而是可选的。

我真的很想知道 NHibernate 是如何实现这一点的。如果有人能用几句话解释,那将不胜感激!

最佳答案

NHibernate 有一个 ILoggerFactory 来创建如下定义的记录器:

public interface ILoggerFactory
{
IInternalLogger LoggerFor(string keyName);
IInternalLogger LoggerFor(System.Type type);
}
IInternalLogger接口(interface),尽管名称根本不是内部的,是实际的记录器接口(interface),毫不奇怪,它恰好映射到 ILog log4net的界面. NH 在需要记录时在内部询问记录器工厂。如果没有配置其他记录器,并且存在 log4net 程序集,则工厂返回 log4net 的包装器。如果您想提供自己的,您只需要提供一个记录器工厂并将其配置为:
 <appSettings>
<add key="nhibernate-logger"
value="MyLoggingLoggerFactory, MyLoggingAssembly"/>
</appSettings>

如您所料,MyLoggingLoggerFactory 类必须实现 ILoggerFactory .返回的记录器当然必须实现 IInternalLogger ,如前所述是公开的,即使不愉快的名称可能会产生误导。
这是他们过去的策略 log4net独立的。另外,如果您根本不需要日志,只需从部署目录中删除 log4net 程序集:NH 将优雅地降级并在内部使用空记录器。

关于nhibernate - NHibernate 如何实现可选的 log4net 日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11015840/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com