The*_*i.9 6 c# logging singleton thread-safety
我正在尝试找出登录我正在处理的async-IO Web服务器的最佳策略.我认为最简单的方法是使用一个单独的类来保持Filestreams为相应的日志文件打开,所以我可以这样做:
Util.Logger.GetInstance().LogAccess(str);
Run Code Online (Sandbox Code Playgroud)
或类似的东西.
我的班级看起来像这样:
public sealed class Logger {
private static StreamWriter sw;
private static readonly Logger instance = new Logger();
private Logger() {
sw = new StreamWriter(logfile);
}
public static Logger GetInstance() {
return instance;
}
public void LogAccess(string str) {
sw.WriteLine(str);
}
}
Run Code Online (Sandbox Code Playgroud)
这一切都在我脑海中,我正在寻找有关如何使其更好的建议,并确保我正确地做到了.最重要的是我需要它是线程安全的,显然它不是当前的状态.不确定最好的方法.
如果您使用NLog,则会自动为您服务- 您在.config文件中定义所有记录器,然后通过静态LogManager类(Singleton)访问所有记录器.
这是一个说明NLog的线程安全特性的示例:
http://nlog-project.org/wiki/Tutorial#Adding_NLog_to_an_application
| 归档时间: |
|
| 查看次数: |
12172 次 |
| 最近记录: |