解决MySql布尔型新旧版本兼容问题,采用枚举来表示布尔型的数据表。由正向工程赋值
大石头 authored at 2018-05-15 21:21:05
2.38 KiB
X
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using NewLife.Log;
using Xunit;
using NewLife.Reflection;
using System.Threading;

namespace XUnitTest.Log
{
    public class LevelLogTests
    {
        [Fact]
        public void CreateTest()
        {
            var p = "LevelLog\\";
            if (Directory.Exists(p.GetFullPath())) Directory.Delete(p.GetFullPath(), true);

            var log = new LevelLog(p, "{1}\\{0:yyyy_MM_dd}.log");
            log.Level = LogLevel.All;

            var logs = log.GetValue("_logs") as IDictionary<LogLevel, ILog>;
            Assert.NotNull(logs);
            Assert.Equal(5, logs.Count);

            log.Debug("debug");
            log.Info("info");
            log.Warn("warn");
            log.Error("error");
            log.Fatal("fatal");

            // 日志通过线程池异步写入,通常毫秒级完成;轮询等待(兜底 5s 定时器刷盘路径)
            var files = new[]
            {
                p + $"debug\\{DateTime.Today:yyyy_MM_dd}.log",
                p + $"info\\{DateTime.Today:yyyy_MM_dd}.log",
                p + $"warn\\{DateTime.Today:yyyy_MM_dd}.log",
                p + $"error\\{DateTime.Today:yyyy_MM_dd}.log",
                p + $"fatal\\{DateTime.Today:yyyy_MM_dd}.log",
            };
            var deadline = DateTime.Now.AddSeconds(6);
            while (DateTime.Now < deadline)
            {
                var ok = true;
                for (var i = 0; i < files.Length; i++)
                {
                    if (!File.Exists(files[i].GetFullPath()))
                    {
                        ok = false;
                        break;
                    }
                }
                if (ok) break;

                Thread.Sleep(50);
            }

            var f = p + $"debug\\{DateTime.Today:yyyy_MM_dd}.log";
            Assert.True(File.Exists(f.GetFullPath()));

            f = p + $"info\\{DateTime.Today:yyyy_MM_dd}.log";
            Assert.True(File.Exists(f.GetFullPath()));

            f = p + $"warn\\{DateTime.Today:yyyy_MM_dd}.log";
            Assert.True(File.Exists(f.GetFullPath()));

            f = p + $"error\\{DateTime.Today:yyyy_MM_dd}.log";
            Assert.True(File.Exists(f.GetFullPath()));

            f = p + $"fatal\\{DateTime.Today:yyyy_MM_dd}.log";
            Assert.True(File.Exists(f.GetFullPath()));
        }
    }
}