HearthBuddy 日志模块

Posted chucklu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 %logger1 %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("%dateyyyy-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 日志模块的主要内容,如果未能解决你的问题,请参考以下文章

python-日志模块

常用模块——日志模块

Python日志—Python日志模块logging介绍

Python--logging日志模块

WindowsGUI自动化测试框架搭建-日志模块封装(logging模块)

求助:python 处理日志,用啥模块比较好