コード例 #1
0
        public static ILogPipline CreateLogPipline(this LogFactory fac, string pipName)
        {
            ILogPipline pip = new LogPipline(fac._piplines.Count, pipName);

            fac._piplines.Add(pip);
            return(pip);
        }
コード例 #2
0
        public void Test1()
        {
            var        logFactory = LogFactoryEntry.GetLogFactory();
            LogPipline pip        = new LogPipline();

            Assert.True(logFactory.TryAddLogPipline(pip));
            CancellationToken token = new CancellationToken(false);
            Task task = pip.ExecuteAsyncWriteLog(token);

            tacdsk.Start();
            Assert.False(task.IsCanceled);
            Assert.False(task.IsCompleted);
        }
コード例 #3
0
        public static async Task ExecuteAsyncWriteLog(this LogPipline pipline, CancellationToken stoppingToken)
        {
            StreamWriter sw = File.Exists(pipline.LogFilePath) ? File.AppendText(pipline.LogFilePath) : File.CreateText(pipline.LogFilePath);

            int idx = -1;

            while (!stoppingToken.IsCancellationRequested)
            {
                while (++idx < pipline.MsgCount())
                {
                    sw.WriteLine(pipline[idx].LogString());
                }
                await Task.Delay(1000, stoppingToken);
            }
            sw.Dispose();
        }
コード例 #4
0
 public static void RunLogPipline(this LogFactory fac, LogPipline pipline, CancellationToken stoppingToken)
 {
     fac._pipTasks.Add(pipline.PiplineNum, pipline.ExecuteAsyncWriteLog(stoppingToken));
 }