| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 | 
							- using NamedPipeWrapper;
 
- using System;
 
- using System.Collections.Generic;
 
- using System.Diagnostics;
 
- using System.IO;
 
- using System.IO.Pipes;
 
- using System.Linq;
 
- using System.Security.AccessControl;
 
- using System.Text;
 
- namespace InABox.Logging
 
- {
 
-     public enum LogType
 
-     {
 
-         Information,
 
-         Query,
 
-         Update,
 
-         Error
 
-     }
 
-     public static class Logger
 
-     {
 
-         private static object logfileLock = new object();
 
-         private static NamedPipeServer<String> _pipe;
 
-         private static String _name = "";
 
-         public static String LogFolder = "";
 
-         private static String TmpFolder = "";
 
-         private static bool _started = false;
 
-         private static bool _logtoconsole = false;
 
-         private static LogType[] _logtypes = new LogType[] { LogType.Information, LogType.Query, LogType.Update, LogType.Error };
 
-         public static void Start(String folder, bool logtoconsole = false, LogType[] logtypes = null)
 
-         {
 
-             _logtoconsole = logtoconsole;
 
-             if (logtypes != null)
 
-                 _logtypes = logtypes;
 
-             LogFolder = folder;
 
-             TmpFolder = Path.Combine(LogFolder, "Temp");
 
-             if (!Directory.Exists(TmpFolder))
 
-                 Directory.CreateDirectory(TmpFolder);
 
-             String[] files = Directory.GetFiles(TmpFolder);
 
-             foreach (var file in files)
 
-                 File.Delete(file);
 
-             _name = System.Diagnostics.Process.GetCurrentProcess().ProcessName;
 
-             PipeSecurity sec = new System.IO.Pipes.PipeSecurity();
 
-             sec.SetAccessRule(new PipeAccessRule("Everyone", PipeAccessRights.ReadWrite, AccessControlType.Allow));
 
-             _pipe = new NamedPipeServer<String>(_name, sec);
 
-             _pipe.ClientConnected += delegate (NamedPipeConnection<String, String> conn)
 
-             {
 
-                 conn.PushMessage("Connected to " + _name);
 
-             };
 
-             _pipe.Start();
 
-             _started = true;
 
-         }
 
-         public static void Send(LogType logtype, String user, String message)
 
-         {
 
-             if (!_started)
 
-                 return;
 
-             if (!_logtypes.Any(x => x == logtype))
 
-                 return;
 
-             String type = logtype == LogType.Information ? "INFO" : logtype == LogType.Query ? "READ" : logtype == LogType.Update ? "UPDATE" : "ERROR";
 
-             String msg = String.Format("{0:HH:mm:ss.fff} {1} {2} {3}",
 
-                 DateTime.Now,
 
-                 type?.PadRight(6),
 
-                 user?.PadRight(12),
 
-                 message
 
-             );
 
-             if (_logtoconsole) //System.Environment.UserInteractive)
 
-                 Console.WriteLine(msg);
 
-             if (_pipe != null)
 
-                 _pipe.PushMessage(msg);
 
-             if (!String.IsNullOrEmpty(LogFolder))
 
-             {
 
-                 if ((logtype == LogType.Information) || (logtype == LogType.Error) || (logtype == LogType.Query))
 
-                     UpdateLogFile(msg);
 
-                 else if (logtype == LogType.Update)
 
-                     UpdateJournal(message);
 
-             }
 
-             //if (logtype == LogType.Error)
 
-             //{
 
-             //    using (EventLog eventLog = new EventLog("Application"))
 
-             //    {
 
-             //        eventLog.Source = "Application";
 
-             //        eventLog.WriteEntry(msg, EventLogEntryType.Error);
 
-             //    }
 
-             //}
 
-         }
 
-         private static void UpdateLogFile(string msg)
 
-         {
 
-             String filename = Path.Combine(LogFolder, String.Format("{0:yyyy-MM-dd}.log", DateTime.Today));
 
-             try
 
-             {
 
-                 lock (logfileLock)
 
-                 {
 
-                     using (StreamWriter sw = new StreamWriter(filename, true, Encoding.UTF8, 65536))
 
-                     {
 
-                         sw.WriteLine(msg);
 
-                         sw.Close();
 
-                     }
 
-                 }
 
-             }
 
-             catch (Exception e)
 
-             {
 
-                 Console.WriteLine("*** Failed to Update Log: " + e.Message);
 
-                 Console.WriteLine("*** Message: " + msg);
 
-             }
 
-         }
 
-         private static void UpdateJournal(string sql)
 
-         {
 
-             String filename = Path.Combine(LogFolder, String.Format("{0:yyyy-MM-dd}.sql", DateTime.Today));
 
-             try
 
-             {
 
-                 lock (logfileLock)
 
-                 {
 
-                     using (StreamWriter sw = new StreamWriter(filename, true, Encoding.UTF8, 65536))
 
-                     {
 
-                         sw.WriteLine(sql);
 
-                         sw.Close();
 
-                     }
 
-                 }
 
-             }
 
-             catch (Exception e)
 
-             {
 
-                 Console.WriteLine("*** Failed to Update SQL Journal: " + e.Message);
 
-                 Console.WriteLine("*** Message: " + sql);
 
-             }
 
-         }
 
-         public static void Dump(String filename, byte[] bytes)
 
-         {
 
-             if (!_started)
 
-                 return;
 
-             String file = Path.Combine(TmpFolder, String.Format("{0:yyyy-MM-dd HH-mm-ss-fff} {1}", DateTime.Now, filename));
 
-             File.WriteAllBytes(file, bytes);
 
-         }
 
-         //public static void Save(String data, String tag, String suffix)
 
-         //{
 
-         //    String filename = Path.Combine( TmpFolder, String.Format("{0:yyyy-MM-dd-HH-mm-ss-ffff} {1}.{2}", DateTime.Now,tag,suffix) );
 
-         //    try
 
-         //    {
 
-         //        File.WriteAllText(filename,data);
 
-         //    }
 
-         //    catch (Exception e)
 
-         //    {
 
-         //        Console.WriteLine("*** Failed to Save Dumpt File: " + e.Message);
 
-         //        Console.WriteLine("*** Message: " + data);
 
-         //    }
 
-         //}
 
-     }
 
- }
 
 
  |