예제 #1
0
파일: LogHelper.cs 프로젝트: TeamTyve/ATM
        public void Log(LoggerTarget target, string message, bool clear = false)
        {
            switch (target)
            {
            case LoggerTarget.Console:
                if (Logger == null)
                {
                    Logger = new ConsoleLogger();
                }
                Logger.WriteLine(message);
                if (clear)
                {
                    Logger.Clear();
                }
                break;

            case LoggerTarget.Event:
                if (Logger == null)
                {
                    Logger = new EventLogger();
                }
                Logger.WriteLine(message);
                if (clear)
                {
                    Logger.Clear();
                }
                break;

            default:
                return;
            }
        }
        public void LoggerFile_Test()
        {
            int          bufferLimit = 3, loggersCount = 10000;
            LoggerTarget loggerFile = new LoggerTarget("E:\\Test_Logger_File.txt");

            ILoggerTarget[] loggerTargets = new ILoggerTarget[] { loggerFile };
            Logger          logger        = new Logger(bufferLimit, loggerTargets);

            for (int i = 0; i < loggersCount; i++)
            {
                logger.Log(new LoggerInformation(LogLevel.Info, "task" + (i + 1) + " start"));
            }

            logger.LoggerFlushControl();
            loggerFile.CloseFile();
        }
예제 #3
0
        private static void WriteLog(LoggerEventType eventType, LoggerOptionsAttribute options, string message)
        {
            LoggerTarget targets = options.GetTargets(eventType);

            if (targets.HasFlag(LoggerTarget.Console))
            {
                ConsoleColor originalColor = Console.ForegroundColor;
                try {
                    Console.ForegroundColor = GetConsoleColor(eventType);
                    Console.WriteLine(message);
                } finally {
                    Console.ForegroundColor = originalColor;
                }
            }
            if (targets.HasFlag(LoggerTarget.EntLib))
            {
                try {
                    LogEntry entry = new LogEntry();
                    entry.Message  = message;
                    entry.Priority = 10 - (int)eventType;
                    entry.Severity = GetTraceEventType(eventType);
                    entry.EventId  = -1;
                    if (!String.IsNullOrEmpty(options.Category))
                    {
                        entry.Categories.Add(options.Category);
                    }
                    EntLibLogger.Write(entry);
                } catch { }
            }
            if (targets.HasFlag(LoggerTarget.UlsLog))
            {
                SPDiagnosticsCategory dCat = new SPDiagnosticsCategory(options.Category, GetTraceSeverity(eventType), GetEventSeverity(eventType));
                SPDiagnosticsService.Local.WriteTrace(0, dCat, GetTraceSeverity(eventType), message);
            }
            if (targets.HasFlag(LoggerTarget.EventLog))
            {
                if (!EventLog.SourceExists(options.Category))
                {
                    EventLog.CreateEventSource(options.Category, options.Category);
                    while (!EventLog.SourceExists(options.Category))
                    {
                        Thread.Sleep(100);
                    }
                }
                EventLog.WriteEntry(options.Category, message, GetEventLogEntryType(eventType), 0);
            }
        }
예제 #4
0
        public static void Log(string message, LoggerLevel level = LoggerLevel.INFO, LoggerTarget target = LoggerTarget.File)
        {
            message = string.Format("{0} {1}", GetLogMessage(level), message);

            switch (target)
            {
            case LoggerTarget.File:
                logger       = new FileLogger();
                logger.Level = level;
                logger.Log(message);
                break;

            case LoggerTarget.Database:
                logger       = new DBLogger();
                logger.Level = level;
                logger.Log(message);
                break;

            default:
                return;
            }
        }
        public void LoggerFile_Test()
        {
            int bufferLimit = 3, loggersCount = 1000;
            int count = 0, i = 0;

            string[] allMessages = new string[1000];

            LoggerTarget loggerFile = new LoggerTarget("E:\\Test_Logger_File.txt");

            ILoggerTarget[] loggerTargets = new ILoggerTarget[] { loggerFile };
            Logger          logger        = new Logger(bufferLimit, loggerTargets);

            for (i = 0; i < loggersCount; i++)
            {
                logger.Log(new LoggerInformation(LogLevel.Info, "task" + (i + 1)));
            }

            for (i = 0; i < loggersCount; i++)
            {
                allMessages[i] = LogLevel.Info + " task" + (i + 1);
            }

            logger.LoggerFlushControl();
            loggerFile.CloseFile();

            string[] fileText = File.ReadAllLines("E:\\Test_Logger_File.txt");
            i = 0;
            foreach (string line in fileText)
            {
                if (line.EndsWith(allMessages[i]))
                {
                    count++;
                }
                i++;
            }
            Assert.AreEqual(count, 1000);
        }
예제 #6
0
 /// <summary>
 /// Creates an instance of the <see cref="LoggerOptionsAttribute"/> class with the specified category and logging targets.
 /// </summary>
 /// <param name="category"></param>
 /// <param name="options"></param>
 public LoggerOptionsAttribute(string category, LoggerTarget options)
     : this(options) {
     this.Category = category;
 }
예제 #7
0
 /// <summary>
 /// Creates an instance of the <see cref="LoggerOptionsAttribute"/> class with the specified logging targets.
 /// </summary>
 /// <param name="options"></param>
 public LoggerOptionsAttribute(LoggerTarget options)
 {
     this.All = options;
 }