using System; using System.Text.RegularExpressions; namespace LogLibrary.Log { public unsafe class Log { private string m_Name; private const string m_MessageTemplate = "{0}-{1}: {2}"; private const string m_Debug = "DEBUG"; private const string m_Error = "ERROR"; private const string m_Fatal = "FATAL"; private const string m_Info = "INFO"; private const string m_Warn = "WARN"; /// /// Initializes a new instance of the class. /// /// The name. public Log(string name) { m_Name = name; } public Log() { m_Name = "NaN"; } /// /// Gets a value indicating whether this instance is debug enabled. /// /// /// true if this instance is debug enabled; otherwise, false. /// public bool IsDebugEnabled { get { return true; } } /// /// Gets a value indicating whether this instance is error enabled. /// /// /// true if this instance is error enabled; otherwise, false. /// public bool IsErrorEnabled { get { return true; } } /// /// Gets a value indicating whether this instance is fatal enabled. /// /// /// true if this instance is fatal enabled; otherwise, false. /// public bool IsFatalEnabled { get { return true; } } /// /// Gets a value indicating whether this instance is info enabled. /// /// /// true if this instance is info enabled; otherwise, false. /// public bool IsInfoEnabled { get { return true; } } /// /// Gets a value indicating whether this instance is warn enabled. /// /// /// true if this instance is warn enabled; otherwise, false. /// public bool IsWarnEnabled { get { return true; } } public string GetDataTimeLog(string log) { return string.Format("[{0}] >> {1}", DateTime.Now.ToString("yy-MM-dd HH:mm:ss"), log); } /// /// Logs the debug message. /// /// /// The message. public void Debug(bool isWriteFile, object message) { string log = GetDataTimeLog(message.ToString()); Console.WriteLine(m_MessageTemplate, m_Name, m_Debug, log); if (isWriteFile) { LogUtil.WriteLogFile(m_Name, m_Debug, log); } } /// /// Logs the debug message. /// /// /// The message. /// The exception. public void Debug(bool isWriteFile, object message, Exception exception) { string log = GetDataTimeLog(message + Environment.NewLine + exception.Message + exception.StackTrace); Console.WriteLine(m_MessageTemplate, m_Name, m_Debug, log); if (isWriteFile) { LogUtil.WriteLogFile(m_Name, m_Debug, log); } } /// /// Logs the debug message. /// /// /// The format. /// The arg0. public void DebugFormat(bool isWriteFile, string format, object arg0) { string log = GetDataTimeLog(string.Format(format, arg0)); Console.WriteLine(m_MessageTemplate, m_Name, m_Debug, log); if (isWriteFile) { LogUtil.WriteLogFile(m_Name, m_Debug, log); } } /// /// Logs the debug message. /// /// /// The format. /// The args. public void DebugFormat(bool isWriteFile, string format, params object[] args) { string log = GetDataTimeLog(string.Format(format, args)); Console.WriteLine(m_MessageTemplate, m_Name, m_Debug, string.Format(format, args)); if (isWriteFile) { LogUtil.WriteLogFile(m_Name, m_Debug, log); } } /// /// Logs the debug message. /// /// /// The provider. /// The format. /// The args. public void DebugFormat(bool isWriteFile, IFormatProvider provider, string format, params object[] args) { string log = GetDataTimeLog(string.Format(format, args)); Console.WriteLine(m_MessageTemplate, m_Name, m_Debug, string.Format(provider, format, args)); if (isWriteFile) { LogUtil.WriteLogFile(m_Name, m_Debug, log); } } /// /// Logs the debug message. /// /// /// The format. /// The arg0. /// The arg1. public void DebugFormat(bool isWriteFile, string format, object arg0, object arg1) { string log = GetDataTimeLog(string.Format(format, arg0, arg1)); Console.WriteLine(m_MessageTemplate, m_Name, m_Debug, log); if (isWriteFile) { LogUtil.WriteLogFile(m_Name, m_Debug, log); } } /// /// Logs the debug message. /// /// /// The format. /// The arg0. /// The arg1. /// The arg2. public void DebugFormat(bool isWriteFile, string format, object arg0, object arg1, object arg2) { string log = GetDataTimeLog(string.Format(format, arg0, arg1, arg2)); Console.WriteLine(m_MessageTemplate, m_Name, m_Debug, log); if (isWriteFile) { LogUtil.WriteLogFile(m_Name, m_Debug, log); } } /// /// Logs the error message. /// /// /// The message. public void Error(bool isWriteFile, object message) { string log = GetDataTimeLog(message.ToString()); Console.WriteLine(m_MessageTemplate, m_Name, m_Error, log); if (isWriteFile) { LogUtil.WriteLogFile(m_Name, m_Error, log); } } /// /// Logs the error message. /// /// /// The message. /// The exception. public void Error(bool isWriteFile, object message, Exception exception) { //string log = GetDataTimeLog(message + Environment.NewLine + exception.Message + exception.StackTrace); string log = GetDataTimeLog(message + Environment.NewLine + exception.Message ); Console.WriteLine(m_MessageTemplate, m_Name, m_Error, log); if (isWriteFile) { LogUtil.WriteLogFile(m_Name, m_Error, log); } } /// /// Logs the error message. /// /// /// The format. /// The arg0. public void ErrorFormat(bool isWriteFile, string format, object arg0) { string log = GetDataTimeLog(string.Format(format, arg0)); Console.WriteLine(m_MessageTemplate, m_Name, m_Error, log); if (isWriteFile) { LogUtil.WriteLogFile(m_Name, m_Error, log); } } /// /// Logs the error message. /// /// /// The format. /// The args. public void ErrorFormat(bool isWriteFile, string format, params object[] args) { string log = GetDataTimeLog(string.Format(format, args)); Console.WriteLine(m_MessageTemplate, m_Name, m_Error, log); if (isWriteFile) { LogUtil.WriteLogFile(m_Name, m_Error, log); } } /// /// Logs the error message. /// /// /// The provider. /// The format. /// The args. public void ErrorFormat(bool isWriteFile, IFormatProvider provider, string format, params object[] args) { string log = GetDataTimeLog(string.Format(provider, format, args)); Console.WriteLine(m_MessageTemplate, m_Name, m_Error, log); if (isWriteFile) { LogUtil.WriteLogFile(m_Name, m_Error, log); } } /// /// Logs the error message. /// /// /// The format. /// The arg0. /// The arg1. public void ErrorFormat(bool isWriteFile, string format, object arg0, object arg1) { string log = GetDataTimeLog(string.Format(format, arg0, arg1)); Console.WriteLine(m_MessageTemplate, m_Name, m_Error, log); if (isWriteFile) { LogUtil.WriteLogFile(m_Name, m_Error, log); } } /// /// Logs the error message. /// /// /// The format. /// The arg0. /// The arg1. /// The arg2. public void ErrorFormat(bool isWriteFile, string format, object arg0, object arg1, object arg2) { string log = GetDataTimeLog(string.Format(format, arg0, arg2)); Console.WriteLine(m_MessageTemplate, m_Name, m_Error, log); if (isWriteFile) { LogUtil.WriteLogFile(m_Name, m_Error, log); } } /// /// Logs the fatal error message. /// /// /// The message. public void Fatal(bool isWriteFile, object message) { string log = GetDataTimeLog(message.ToString()); Console.WriteLine(m_MessageTemplate, m_Name, m_Fatal, log); if (isWriteFile) { LogUtil.WriteLogFile(m_Name, m_Fatal, log); } } /// /// Logs the fatal error message. /// /// /// The message. /// The exception. public void Fatal(bool isWriteFile, object message, Exception exception) { string log = GetDataTimeLog(message + Environment.NewLine + exception.Message + exception.StackTrace); Console.WriteLine(m_MessageTemplate, m_Name, m_Fatal, log); if (isWriteFile) { LogUtil.WriteLogFile(m_Name, m_Fatal, log); } } /// /// Logs the fatal error message. /// /// /// The format. /// The arg0. public void FatalFormat(bool isWriteFile, string format, object arg0) { string log = GetDataTimeLog(string.Format(format, arg0)); Console.WriteLine(m_MessageTemplate, m_Name, m_Fatal, log); if (isWriteFile) { LogUtil.WriteLogFile(m_Name, m_Fatal, log); } } /// /// Logs the fatal error message. /// /// /// The format. /// The args. public void FatalFormat(bool isWriteFile, string format, params object[] args) { string log = GetDataTimeLog(string.Format(format, args)); Console.WriteLine(m_MessageTemplate, m_Name, m_Fatal, log); if (isWriteFile) { LogUtil.WriteLogFile(m_Name, m_Fatal, log); } } /// /// Logs the fatal error message. /// /// /// The provider. /// The format. /// The args. public void FatalFormat(bool isWriteFile, IFormatProvider provider, string format, params object[] args) { string log = GetDataTimeLog(string.Format(provider, format, args)); Console.WriteLine(m_MessageTemplate, m_Name, m_Fatal, log); if (isWriteFile) { LogUtil.WriteLogFile(m_Name, m_Fatal, log); } } /// /// Logs the fatal error message. /// /// /// The format. /// The arg0. /// The arg1. public void FatalFormat(bool isWriteFile, string format, object arg0, object arg1) { string log = GetDataTimeLog(string.Format(format, arg0, arg1)); Console.WriteLine(m_MessageTemplate, m_Name, m_Fatal, log); if (isWriteFile) { LogUtil.WriteLogFile(m_Name, m_Fatal, log); } } /// /// Logs the fatal error message. /// /// /// The format. /// The arg0. /// The arg1. /// The arg2. public void FatalFormat(bool isWriteFile, string format, object arg0, object arg1, object arg2) { string log = GetDataTimeLog(string.Format(format, arg0, arg1, arg2)); Console.WriteLine(m_MessageTemplate, m_Name, m_Fatal, log); if (isWriteFile) { LogUtil.WriteLogFile(m_Name, m_Fatal, log); } } /// /// Logs the info message. /// /// /// The message. public void Info(bool isWriteFile, object message) { string log = GetDataTimeLog(message.ToString()); Console.WriteLine(m_MessageTemplate, m_Name, m_Info, log); if (isWriteFile) { LogUtil.WriteLogFile(m_Name, m_Info, log); } } /// /// Logs the info message. /// /// /// The message. /// The exception. public void Info(bool isWriteFile, object message, Exception exception) { string log = GetDataTimeLog(message + Environment.NewLine + exception.Message + exception.StackTrace); Console.WriteLine(m_MessageTemplate, m_Name, m_Info, log); if (isWriteFile) { LogUtil.WriteLogFile(m_Name, m_Info, log); } } /// /// Logs the info message. /// /// /// The format. /// The arg0. public void InfoFormat(bool isWriteFile, string format, object arg0) { string log = GetDataTimeLog(string.Format("\n{0}\n{1}\n-----------------------------------------------------------\n\n", format, arg0)); Console.WriteLine(m_MessageTemplate, m_Name, m_Info, log); if (isWriteFile) { LogUtil.WriteLogFile(m_Name, m_Info, log); } } /// /// Logs the info message. /// /// /// The format. /// The args. //public void InfoFormat(bool isWriteFile, string format, params object[] args) //{ // string log = GetDataTimeLog(string.Format(format, args)); // Console.WriteLine(m_MessageTemplate, m_Name, m_Info, log); // if (isWriteFile) // { // LogUtil.WriteLogFile(m_Name, m_Info, log); // } //} /// /// Logs the info message. /// /// /// The provider. /// The format. /// The args. //public void InfoFormat(bool isWriteFile, IFormatProvider provider, string format, params object[] args) //{ // string log = GetDataTimeLog(string.Format(provider, format, args)); // Console.WriteLine(m_MessageTemplate, m_Name, m_Info, log); // if (isWriteFile) // { // LogUtil.WriteLogFile(m_Name, m_Info, log); // } //} /// /// Logs the info message. /// /// /// The format. /// The arg0. /// The arg1. //public void InfoFormat(bool isWriteFile, string format, object arg0, object arg1) //{ // string log = GetDataTimeLog(string.Format(format, arg0, arg1)); // Console.WriteLine(m_MessageTemplate, m_Name, m_Info, log); // if (isWriteFile) // { // LogUtil.WriteLogFile(m_Name, m_Info, log); // } //} /// /// Logs the info message. /// /// /// The format. /// The arg0. /// The arg1. /// The arg2. public void InfoFormat(bool isWriteFile, object arg0, object arg1, object arg2) { string func(string str, int len) { var strSLen = Regex.Replace(str, @"[^\x00-\xff]", "aa").Length; var strLen = str.Length; return str.PadLeft(len - strSLen + strLen); } string log = GetDataTimeLog(string.Format("[{0}]\t[{1}]\t{2}", arg0?.ToString(), arg1?.ToString(), arg2)); //string log = GetDataTimeLog(string.Format("[{0}] [{1}] {2}", func(arg0?.ToString(), 13), func(arg1?.ToString(), 16), arg2)); //Console.WriteLine(m_MessageTemplate, m_Name, m_Info, log); if (isWriteFile) { LogUtil.WriteLogFile(m_Name, m_Info, log); } } /// /// Logs the warning message. /// /// /// The message. public void Warn(bool isWriteFile, object message) { string log = GetDataTimeLog(message.ToString()); Console.WriteLine(m_MessageTemplate, m_Name, m_Warn, log); if (isWriteFile) { LogUtil.WriteLogFile(m_Name, m_Warn, log); } } /// /// Logs the warning message. /// /// /// The message. /// The exception. public void Warn(bool isWriteFile, object message, Exception exception) { string log = GetDataTimeLog(message + Environment.NewLine + exception.Message + exception.StackTrace); Console.WriteLine(m_MessageTemplate, m_Name, m_Warn, log); if (isWriteFile) { LogUtil.WriteLogFile(m_Name, m_Warn, log); } } /// /// Logs the warning message. /// /// /// The format. /// The arg0. public void WarnFormat(bool isWriteFile, string format, object arg0) { string log = GetDataTimeLog(string.Format(format, arg0)); Console.WriteLine(m_MessageTemplate, m_Name, m_Warn, log); if (isWriteFile) { LogUtil.WriteLogFile(m_Name, m_Warn, log); } } /// /// Logs the warning message. /// /// /// The format. /// The args. public void WarnFormat(bool isWriteFile, string format, params object[] args) { string log = GetDataTimeLog(string.Format(format, args)); Console.WriteLine(m_MessageTemplate, m_Name, m_Warn, log); if (isWriteFile) { LogUtil.WriteLogFile(m_Name, m_Warn, log); } } /// /// Logs the warning message. /// /// /// The provider. /// The format. /// The args. public void WarnFormat(bool isWriteFile, IFormatProvider provider, string format, params object[] args) { string log = GetDataTimeLog(string.Format(provider, format, args)); Console.WriteLine(m_MessageTemplate, m_Name, m_Warn, log); if (isWriteFile) { LogUtil.WriteLogFile(m_Name, m_Warn, log); } } /// /// Logs the warning message. /// /// /// The format. /// The arg0. /// The arg1. public void WarnFormat(bool isWriteFile, string format, object arg0, object arg1) { string log = GetDataTimeLog(string.Format(format, arg0, arg1)); Console.WriteLine(m_MessageTemplate, m_Name, m_Warn, log); if (isWriteFile) { LogUtil.WriteLogFile(m_Name, m_Warn, log); } } /// /// Logs the warning message. /// /// /// The format. /// The arg0. /// The arg1. /// The arg2. public void WarnFormat(bool isWriteFile, string format, object arg0, object arg1, object arg2) { string log = GetDataTimeLog(string.Format(format, arg0, arg1, arg2)); Console.WriteLine(m_MessageTemplate, m_Name, m_Warn, log); if (isWriteFile) { LogUtil.WriteLogFile(m_Name, m_Warn, log); } } //public void Behavior(string logMsg, Level level) //{ // lock (this) // { // m_Name = "行为"; // switch (level) // { // case Level.Debug: // Debug(true, logMsg); // break; // case Level.Info: // Info(true, logMsg); // break; // case Level.Warning: // Warn(true, logMsg); // break; // case Level.Error: // Error(true, logMsg); // break; // default: // break; // } // } //} //public void Interface(string logMsg, Level level) //{ // lock (this) // { // m_Name = "接口"; // switch (level) // { // case Level.Debug: // Debug(true, logMsg); // break; // case Level.Info: // Info(true, logMsg); // break; // case Level.Warning: // Warn(true, logMsg); // break; // case Level.Error: // Error(true, logMsg); // break; // default: // break; // } // } //} //public void Hardware(string logMsg, Level level) //{ // lock (this) // { // m_Name = "硬件"; // switch (level) // { // case Level.Debug: // Debug(true, logMsg); // break; // case Level.Info: // Info(true, logMsg); // break; // case Level.Warning: // Warn(true, logMsg); // break; // case Level.Error: // Error(true, logMsg); // break; // default: // break; // } // } //} } }