source: branches/eraser6/Eraser/LogForm.cs @ 304

Revision 304, 1.5 KB checked in by lowjoel, 6 years ago (diff)

Move all the Task log functions to the Logger class
-The Logger class has a notion of Sessions, which allow log entries to be separated by session such that log entries can be examined session-by-session by the program to determine if the previous run finished with errors.

Line 
1using System;
2using System.Collections.Generic;
3using System.ComponentModel;
4using System.Data;
5using System.Drawing;
6using System.Text;
7using System.Windows.Forms;
8
9using Eraser.Manager;
10using System.Globalization;
11
12namespace Eraser
13{
14    public partial class LogForm : Form
15    {
16        public LogForm(Task task)
17        {
18            InitializeComponent();
19            this.task = task;
20
21            //Update the title
22            Text = string.Format("{0} - {1}", Text, task.UIText);
23
24            //Add all the existing log messages
25            List<LogEntry> log = task.Log.LastSessionEntries;
26            foreach (LogEntry entry in log)
27                task_Logged(entry);
28
29            //Register our event handler to get live log messages
30            task.Log.OnLogged += new Logger.LogEvent(task_Logged);
31        }
32
33        ~LogForm()
34        {
35            task.Log.OnLogged -= new Logger.LogEvent(task_Logged);
36        }
37
38        private void task_Logged(LogEntry e)
39        {
40            ListViewItem item = log.Items.Add(e.Timestamp.ToString(
41                    DateTimeFormatInfo.CurrentInfo.ShortDatePattern + " " +
42                    DateTimeFormatInfo.CurrentInfo.ShortTimePattern));
43            item.SubItems.Add(e.Level.ToString());
44            item.SubItems.Add(e.Message);
45
46            switch (e.Level)
47            {
48                case LogLevel.FATAL:
49                case LogLevel.ERROR:
50                    item.ForeColor = Color.Red;
51                    break;
52                case LogLevel.WARNING:
53                    item.ForeColor = Color.OrangeRed;
54                    break;
55            }
56        }
57
58        private void clear_Click(object sender, EventArgs e)
59        {
60            this.task.Log.Clear();
61            log.Items.Clear();
62        }
63
64        private void close_Click(object sender, EventArgs e)
65        {
66            Close();
67        }
68
69        private Task task;
70    }
71}
Note: See TracBrowser for help on using the repository browser.