作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我记得 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>
ILoggerFactory
.返回的记录器当然必须实现
IInternalLogger
,如前所述是公开的,即使不愉快的名称可能会产生误导。
log4net
独立的。另外,如果您根本不需要日志,只需从部署目录中删除 log4net 程序集:NH 将优雅地降级并在内部使用空记录器。
关于nhibernate - NHibernate 如何实现可选的 log4net 日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11015840/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!