码迷,mamicode.com
首页 > 其他好文 > 详细

HearthBuddy 日志模块

时间:2019-08-18 13:50:15      阅读:63      评论:0      收藏:0      [点我收藏+]

标签:pattern   max   combine   this   line   lock   inline   flags   logging   

 

 

// Triton.Common.LogUtilities.CustomLogger
// Token: 0x04000BD8 RID: 3032
private Level level_0 = Level.All;
// Token: 0x04000BD9 RID: 3033
private Level level_1 = Level.Emergency;
// Token: 0x06001779 RID: 6009 RVA: 0x000D3D08 File Offset: 0x000D1F08
public CustomLogger(string path, string prefix, Level minLevel, Level maxLevel)
{
    this.string_0 = prefix;
    this.level_0 = (minLevel ?? Level.All);
    this.level_1 = (maxLevel ?? Level.Emergency);
    Directory.CreateDirectory(path);
    PatternLayout patternLayout = new PatternLayout("%-4utcdate [%thread] %-5level %logger{1} %ndc - %message%newline");
    DateTime now = DateTime.Now;
    this.FileName = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), string.Format("{6}\\{7} {5} {0:0000}-{1:00}-{2:00} {3:00}.{4:00}.txt", new object[]
    {
        now.Year,
        now.Month,
        now.Day,
        now.Hour,
        now.Minute,
        Process.GetCurrentProcess().Id,
        path,
        this.string_0
    }));
    FileAppender fileAppender = new FileAppender
    {
        File = this.FileName,
        Layout = patternLayout,
        LockingModel = new FileAppender.MinimalLock()
    };
    fileAppender.AddFilter(new LevelRangeFilter
    {
        LevelMin = this.level_0,
        LevelMax = this.level_1,
        AcceptOnMatch = true
    });
    patternLayout.ActivateOptions();
    fileAppender.ActivateOptions();
    AsyncAppender asyncAppender = new AsyncAppender();
    asyncAppender.AddAppender(fileAppender);
    asyncAppender.ActivateOptions();
    Hierarchy hierarchy = (Hierarchy)LogManager.CreateRepository(this.string_0);
    hierarchy.Root.AddAppender(asyncAppender);
    hierarchy.Configured = true;
}

 

 

// Triton.Common.LogUtilities.CustomLogger
// Token: 0x0600177C RID: 6012 RVA: 0x000D3F1C File Offset: 0x000D211C
public void AddWpfListener(ScrollViewer scrollViewer, RichTextBox rtbLog)
{
    PatternLayout patternLayout = new PatternLayout("%message");
    this.wpfRtfAppender_0 = new WpfRtfAppender(scrollViewer, rtbLog)
    {
        Layout = patternLayout
    };
    LevelRangeFilter levelRangeFilter = new LevelRangeFilter();
    levelRangeFilter.LevelMin = this.level_0;
    levelRangeFilter.LevelMax = this.level_1;
    this.wpfRtfAppender_0.AddFilter(levelRangeFilter);
    patternLayout.ActivateOptions();
    this.wpfRtfAppender_0.ActivateOptions();
    AsyncAppender asyncAppender = new AsyncAppender();
    asyncAppender.AddAppender(this.wpfRtfAppender_0);
    asyncAppender.ActivateOptions();
    ((Hierarchy)LogManager.GetRepository(this.string_0)).Root.AddAppender(asyncAppender);
}

 

如何把日志输出到MainWindow

// Hearthbuddy.Windows.MainWindow
// Token: 0x0400014B RID: 331
private bool bool_0 = true;
// Token: 0x04000150 RID: 336
private readonly Stopwatch stopwatch_0 = new Stopwatch();
// Token: 0x060001FE RID: 510 RVA: 0x00003C20 File Offset: 0x00001E20
public MainWindow()
{
    this.InitializeComponent();
    Logger.AddWpfListener(this.scrollViewer_0, this.richTextBox_0);
}

 

// Triton.Common.LogUtilities.Logger
// Token: 0x06001782 RID: 6018 RVA: 0x00010FE5 File Offset: 0x0000F1E5
public static void AddWpfListener(ScrollViewer scrollViewer, RichTextBox rtbLog)
{
    Logger.customLogger_0.AddWpfListener(scrollViewer, rtbLog);
}

 

// Triton.Common.LogUtilities.CustomLogger
// Token: 0x0600177C RID: 6012 RVA: 0x000D3F24 File Offset: 0x000D2124
public void AddWpfListener(ScrollViewer scrollViewer, RichTextBox rtbLog)
{
    PatternLayout patternLayout = new PatternLayout("%date{yyyy-MM-dd HH:mm:ss.fffzzz} [%thread] %-5level %logger - %message%newline");
    this.wpfRtfAppender_0 = new WpfRtfAppender(scrollViewer, rtbLog)
    {
        Layout = patternLayout
    };
    LevelRangeFilter levelRangeFilter = new LevelRangeFilter();
    levelRangeFilter.LevelMin = this.level_0;
    levelRangeFilter.LevelMax = this.level_1;
    this.wpfRtfAppender_0.AddFilter(levelRangeFilter);
    patternLayout.ActivateOptions();
    this.wpfRtfAppender_0.ActivateOptions();
    AsyncAppender asyncAppender = new AsyncAppender();
    asyncAppender.AddAppender(this.wpfRtfAppender_0);
    asyncAppender.ActivateOptions();
    ((Hierarchy)LogManager.GetRepository(this.string_0)).Root.AddAppender(asyncAppender);
}

 

输出日志的颜色控制

// Triton.Common.LogUtilities.WpfRtfAppender
// Token: 0x060017AA RID: 6058 RVA: 0x000D40E4 File Offset: 0x000D22E4
private void method_0(object sender, EventArgs e)
{
    try
    {
        this.dispatcherTimer_0.Stop();
        SolidColorBrush solidColorBrush = this.InfoBrush;
        StringBuilder stringBuilder = new StringBuilder();
        Action<StringBuilder, SolidColorBrush> action = new Action<StringBuilder, SolidColorBrush>(this.method_1);
        if (this.paragraph_0 == null)
        {
            this.richTextBox_0.Document.Blocks.Clear();
            this.paragraph_0 = new Paragraph();
            this.paragraph_0.Margin = new Thickness(0.0);
            this.richTextBox_0.Document.Blocks.Add(this.paragraph_0);
        }
        if (this.int_0 >= 2000)
        {
            this.paragraph_0.Inlines.Clear();
            this.int_0 = 0;
        }
        LoggingEvent loggingEvent;
        while (this.concurrentQueue_0.TryDequeue(out loggingEvent))
        {
            loggingEvent.Fix = FixFlags.All;
            string value = base.RenderLoggingEvent(loggingEvent);
            string name = loggingEvent.Level.Name;
            SolidColorBrush solidColorBrush2;
            if (!(name == "DEBUG"))
            {
                if (!(name == "ERROR"))
                {
                    if (!(name == "WARN"))
                    {
                        solidColorBrush2 = this.InfoBrush;
                    }
                    else
                    {
                        solidColorBrush2 = this.WarnBrush;
                    }
                }
                else
                {
                    solidColorBrush2 = this.ErrorBrush;
                }
            }
            else
            {
                solidColorBrush2 = this.DebugBrush;
            }
            if (!object.Equals(solidColorBrush2, solidColorBrush))
            {
                action(stringBuilder, solidColorBrush);
                stringBuilder.Clear();
                solidColorBrush = solidColorBrush2;
            }
            stringBuilder.AppendLine(value);
            this.int_0++;
        }
        if (stringBuilder.Length != 0)
        {
            action(stringBuilder, solidColorBrush);
            this.int_0++;
        }
        if (this.scrollViewer_0.ScrollableHeight.Equals(this.scrollViewer_0.ContentVerticalOffset))
        {
            this.scrollViewer_0.ScrollToEnd();
        }
    }
    finally
    {
        this.dispatcherTimer_0.Start();
    }
}

 

HearthBuddy 日志模块

标签:pattern   max   combine   this   line   lock   inline   flags   logging   

原文地址:https://www.cnblogs.com/chucklu/p/11372019.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!