static Boolean InitLog() { /* * 日志初始化可能会触发配置模块,其内部又写日志导致死循环。 * 1,外部写日志引发初始化 * 2,标识日志初始化正在进行中 * 3,初始化日志提供者 * 4,此时如果再次引发写入日志,发现正在进行中,放弃写入的日志 * 5,标识日志初始化已完成 * 6,正常写入日志 */ if (_Log != null && _Log != Logger.Null) { return(true); } if (_initing > 0 && _initing == Thread.CurrentThread.ManagedThreadId) { return(false); } lock (_lock) { if (_Log != null && _Log != Logger.Null) { return(true); } _initing = Thread.CurrentThread.ManagedThreadId; var set = Setting.Current; if (set.LogFileFormat.Contains("{1}")) { _Log = new LevelLog(LogPath, set.LogFileFormat); } else { _Log = TextFileLog.Create(LogPath); } if (!set.NetworkLog.IsNullOrEmpty()) { var nlog = new NetworkLog(set.NetworkLog); _Log = new CompositeLog(_Log, nlog); } _initing = 0; } //WriteVersion(); return(true); }
/// <summary> /// 2012.11.05 修正初次调用的时候,由于同步BUG,导致Log为空的问题。 /// </summary> static Boolean InitLog() { /* * 日志初始化可能会除法配置模块,其内部又写日志导致死循环。 * 1,外部写日志引发初始化 * 2,标识日志初始化正在进行中 * 3,初始化日志提供者 * 4,此时如果再次引发写入日志,发现正在进行中,放弃写入的日志 * 5,标识日志初始化已完成 * 6,正常写入日志 */ if (_Log != null) { return(true); } if (_initing > 0 && _initing == Thread.CurrentThread.ManagedThreadId) { return(false); } lock (_lock) { if (_Log != null) { return(true); } _initing = Thread.CurrentThread.ManagedThreadId; #if !__MOBILE__ _Log = TextFileLog.Create(LogPath); #else _Log = new NetworkLog(); #endif var set = Setting.Current; if (!set.NetworkLog.IsNullOrEmpty()) { var nlog = new NetworkLog(NetHelper.ParseEndPoint(set.NetworkLog, 514)); _Log = new CompositeLog(_Log, nlog); } _initing = 0; } WriteVersion(); return(true); }