有一個LogManager類具有類型參數給log4net的是這樣的:我如何使用單類瞬態記錄器,簡單的噴油器
public class LogManager<T> : ILogManager
{
private ILog Logger { get; set; }
public LogManager()
{
Logger = LogManager.GetLogger(typeof(T));
}
}
我註冊這個記錄作爲條件:
container.RegisterConditional(typeof(ILogManager),
c => typeof(LogManager<>).MakeGenericType(c.Consumer.ImplementationType),
Lifestyle.Transient,
c => true);
它的工作方式就像它應該的那樣,我將日誌管理器注入到控制器的構造器中並使用它。但有一個問題。我有很多應該使用日誌管理器的單例類,但我不能將它注入到它們中,因爲日誌管理器的壽命比其他日誌管理器短,所以簡單的注入器不會允許我這樣做。
建議的解決方案是向其他單例注入一個日誌工廠類並每次調用工廠,這聽起來像個壞主意。我不想做_logFactory.GetLogger()。調試(「日誌」)每次我想記錄一些東西。或者我錯過了這個解決方案的一些東西?
另一個建議的解決方案是使單態類暫態,這沒有任何意義。
任何建議我應該如何繼續?我的設計有什麼問題嗎?
Sooo ...你爲什麼不把'LogManager'註冊爲單身人士? –
Steven
如果我這樣做,我失去了記錄的課程信息。 – gmnnn
你測試過了嗎? Log4net的Logger類是線程安全的,每個'T'都會有它自己的'LogManager'實例。 –
Steven