Created
November 22, 2017 15:39
-
-
Save nathan130200/71255f5f9219b5190161c0592fac794a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.IO; | |
using System.Linq; | |
using System.Text; | |
using System.Threading.Tasks; | |
using System.Timers; | |
using System.Xml.Linq; | |
namespace FileWatcher { | |
class Program { | |
static List<FileSystemWatcher> watchers; | |
static Queue<LogData> queue; | |
static Timer timer; | |
static void Main(string[] args) { | |
queue = new Queue<LogData>(); | |
timer = new Timer(TimeSpan.FromHours(1).TotalMilliseconds); | |
timer.Elapsed += CmdElapsed; | |
timer.Start(); | |
watchers = new List<FileSystemWatcher>(new FileSystemWatcher[] { | |
new FileSystemWatcher(@"C:\"){ IncludeSubdirectories = true, EnableRaisingEvents = true }, | |
new FileSystemWatcher(@"E:\"){ IncludeSubdirectories = true, EnableRaisingEvents = true } | |
}); | |
foreach(var watch in watchers) { | |
watch.Changed += (sender, e) => { | |
queue.Enqueue(new LogData { | |
event_name = "Changed", | |
timestamp = DateTime.Now, | |
data = new string[] { | |
"File Name: \""+e.FullPath+"\"" | |
} | |
}); | |
}; | |
watch.Deleted += (sender, e) => { | |
queue.Enqueue(new LogData { | |
event_name = "Deleted", | |
timestamp = DateTime.Now, | |
data = new string[] { | |
"File Name: "+e.FullPath | |
} | |
}); | |
}; | |
watch.Error += (sender, e) => { | |
queue.Enqueue(new LogData { | |
event_name = "Deleted", | |
timestamp = DateTime.Now, | |
data = new string[] { | |
e.GetException().ToString() | |
} | |
}); | |
}; | |
watch.Renamed += (sender, e) => { | |
queue.Enqueue(new LogData { | |
event_name = "Renamed", | |
timestamp = DateTime.Now, | |
data = new string[] { | |
"File Name: <"+e.OldFullPath + "> -> <"+ e.FullPath + ">" | |
} | |
}); | |
}; | |
} | |
while (true); | |
} | |
private static void CmdElapsed(object sender, ElapsedEventArgs e) { | |
var now = DateTime.Now; | |
var html = new XElement("html"); | |
var head = new XElement("head"); | |
var body = new XElement("body"); | |
{ | |
while (queue.Any()) { | |
var item = queue.Dequeue(); | |
{ | |
XElement span = new XElement("span"); | |
span.SetAttributeValue("id", "entry-" + item.GetHashCode()); | |
{ | |
span.Add(new XElement("b", item.event_name)); | |
span.Add(new XElement("span", item.timestamp.ToString("dd/MM/yyyy HH:mm:ss"))); | |
span.Add(new XElement("span", item.data)); | |
} | |
body.Add(span); | |
body.Add(new XElement("br")); | |
body.Add(new XElement("hr")); | |
} | |
} | |
} | |
html.Add(head); | |
html.Add(body); | |
File.WriteAllText(Directory.GetCurrentDirectory() + @"\FileWatcher_" + now.ToString("dd-MM-yyyy_HH-mm-ss") + ".html", html.ToString()); | |
} | |
} | |
public unsafe struct LogData { | |
public string event_name; | |
public DateTime timestamp; | |
public string[] data; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment