zoukankan      html  css  js  c++  java
  • HearthBuddy 日志模块

    // 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();
        }
    }
  • 相关阅读:
    【cocos2d-js官方文档】十四、cc.spriteFrameCache 改造说明
    [SVN]创建本地的SVN仓库
    [C++]函数参数浅析
    [Windows Phone]AnimationHelper管理分散的Storyboard
    [Windows Phone]常用类库&API推荐
    [Windows Phone]模仿魔兽3技能按钮SkillButton
    [C++]引用浅析
    [C++]new和delete
    [C++]指针浅析
    [C++]C++中的运行时类型检测
  • 原文地址:https://www.cnblogs.com/chucklu/p/11372019.html
Copyright © 2011-2022 走看看