Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        /// <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);
        }