Index: /branches/eraser6/Eraser/LogForm.Designer.cs
===================================================================
--- /branches/eraser6/Eraser/LogForm.Designer.cs	(revision 338)
+++ /branches/eraser6/Eraser/LogForm.Designer.cs	(revision 339)
@@ -30,9 +30,9 @@
 		{
 			this.log = new System.Windows.Forms.ListView();
-			this.clear = new System.Windows.Forms.Button();
-			this.close = new System.Windows.Forms.Button();
 			this.timestamp = new System.Windows.Forms.ColumnHeader();
 			this.severity = new System.Windows.Forms.ColumnHeader();
 			this.message = new System.Windows.Forms.ColumnHeader();
+			this.clear = new System.Windows.Forms.Button();
+			this.close = new System.Windows.Forms.Button();
 			this.SuspendLayout();
 			// 
@@ -47,12 +47,26 @@
             this.message});
 			this.log.FullRowSelect = true;
+			this.log.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
 			this.log.Location = new System.Drawing.Point(12, 12);
 			this.log.MultiSelect = false;
 			this.log.Name = "log";
-			this.log.ShowGroups = false;
 			this.log.Size = new System.Drawing.Size(600, 391);
 			this.log.TabIndex = 0;
 			this.log.UseCompatibleStateImageBehavior = false;
 			this.log.View = System.Windows.Forms.View.Details;
+			// 
+			// timestamp
+			// 
+			this.timestamp.Text = "Timestamp";
+			this.timestamp.Width = 140;
+			// 
+			// severity
+			// 
+			this.severity.Text = "Severity";
+			// 
+			// message
+			// 
+			this.message.Text = "Message";
+			this.message.Width = 375;
 			// 
 			// clear
@@ -77,18 +91,4 @@
 			this.close.UseVisualStyleBackColor = true;
 			this.close.Click += new System.EventHandler(this.close_Click);
-			// 
-			// timestamp
-			// 
-			this.timestamp.Text = "Timestamp";
-			this.timestamp.Width = 140;
-			// 
-			// severity
-			// 
-			this.severity.Text = "Severity";
-			// 
-			// message
-			// 
-			this.message.Text = "Message";
-			this.message.Width = 375;
 			// 
 			// LogForm
Index: /branches/eraser6/Eraser/LogForm.cs
===================================================================
--- /branches/eraser6/Eraser/LogForm.cs	(revision 338)
+++ /branches/eraser6/Eraser/LogForm.cs	(revision 339)
@@ -23,7 +23,12 @@
 
 			//Add all the existing log messages
-			List<LogEntry> log = task.Log.LastSessionEntries;
-			foreach (LogEntry entry in log)
-				task_Logged(entry);
+			Dictionary<DateTime, List<LogEntry>> log = task.Log.Entries;
+			Dictionary<DateTime, List<LogEntry>>.Enumerator iter = log.GetEnumerator();
+			foreach (DateTime sessionTime in log.Keys)
+			{
+				this.log.Groups.Add(new ListViewGroup("Session: " + sessionTime.ToString(DATEPATTERN)));
+				foreach (LogEntry entry in log[sessionTime])
+					task_Logged(entry);
+			}
 
 			//Register our event handler to get live log messages
@@ -38,9 +43,9 @@
 		private void task_Logged(LogEntry e)
 		{
-			ListViewItem item = log.Items.Add(e.Timestamp.ToString(
-					DateTimeFormatInfo.CurrentInfo.ShortDatePattern + " " +
-					DateTimeFormatInfo.CurrentInfo.ShortTimePattern));
+			ListViewItem item = log.Items.Add(e.Timestamp.ToString(DATEPATTERN));
 			item.SubItems.Add(e.Level.ToString());
 			item.SubItems.Add(e.Message);
+			if (log.Groups.Count != 0)
+				item.Group = log.Groups[log.Groups.Count - 1];
 
 			switch (e.Level)
@@ -68,4 +73,7 @@
 
 		private Task task;
+		private static string DATEPATTERN =
+			DateTimeFormatInfo.CurrentInfo.ShortDatePattern + " " +
+			DateTimeFormatInfo.CurrentInfo.ShortTimePattern;
 	}
 }
