| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 | using System;namespace InABox.Core{    public enum LogType    {        Information,        Query,        Update,        Error,        /// <summary>        /// This log is an important notice that the system administrator should not ignore.        /// </summary>        Important    }    public delegate void LogEvent(LogType type, string userid, string message, Guid transaction);    public class Logger    {        public static event LogEvent OnLog;        public static Logger Main = new Logger(Guid.Empty);        public Guid Transaction { get; set; }        public Logger(Guid transaction)        {            Transaction = transaction;        }        public static Logger New() => new Logger(Guid.NewGuid());        public void Error(string message)        {            this.Send(LogType.Error, "", message);        }        public void Error(string userid, string message)        {            this.Send(LogType.Error, userid, message);        }        public void Info(string message)        {            this.Send(LogType.Information, "", message);        }        public void Info(string userid, string message)        {            this.Send(LogType.Information, userid, message);        }        public void Send(LogType logtype, string userid, string message)        {            OnLog?.Invoke(logtype, userid, message, Transaction);        }        public static void Send(LogType logtype, string userid, string message, Guid? transaction = null)        {            OnLog?.Invoke(logtype, userid, message, transaction ?? Guid.Empty);        }        public static void SendFormat(LogType logtype, string userid, string message, Guid? transaction, params object[] parameters)        {            OnLog?.Invoke(logtype, userid, string.Format(message, parameters), transaction ?? Guid.Empty);        }    }}
 |