#region Arthea License /*********************************************************************** * Arthea MUD by R. Jennings (2007) http://arthea.googlecode.com/ * * By using this code you comply with the Artistic and GPLv2 Licenses. * ***********************************************************************/ #endregion using System; using System.IO; using System.Text; using Arthea.Commands.Admin; using Arthea.Connections.Players; using Arthea.Environment; namespace Arthea { /// <summary> /// Implements a way to write a log /// </summary> public struct Log { private static readonly TextWriter file = new StreamWriter(CreateFileName()); /// <summary> /// Creates the name of the file. /// </summary> /// <returns>the file name</returns> private static string CreateFileName() { return Paths.LogDir + DateTime.Now.ToString("ddMMyy-h.mt") + ".log"; } private static void LogMessage(string type, object message) { StringBuilder buf = new StringBuilder(); buf.AppendFormat("[{0}] [{1,-5}] {2}", DateTime.Now, type, message); file.WriteLine(buf); file.Flush(); Console.WriteLine(buf); } /// <summary> /// Logs a debugging message. /// </summary> /// <param name="text">The text.</param> /// <param name="args">The args.</param> public static void Debug(string text, params object[] args) { LogMessage("DEBUG", string.Format(text, args)); } /// <summary> /// Logs a debugging message. /// </summary> /// <param name="message">The message.</param> public static void Debug(object message) { LogMessage("DEBUG", message); } /// <summary> /// Logs a warning message. /// </summary> /// <param name="text">The text.</param> /// <param name="args">The args.</param> public static void Warn(string text, params object[] args) { LogMessage("WARN", string.Format(text, args)); } /// <summary> /// Logs a warning message. /// </summary> /// <param name="message">The message.</param> public static void Warn(object message) { LogMessage("WARN", message); } /// <summary> /// Logs and info message. /// </summary> /// <param name="text">The text.</param> /// <param name="args">The args.</param> public static void Info(string text, params object[] args) { LogMessage("INFO", string.Format(text, args)); } /// <summary> /// Logs an info message. /// </summary> /// <param name="message">The message.</param> public static void Info(object message) { LogMessage("INFO", message); } /// <summary> /// Logs an error message. /// </summary> /// <param name="text">The text.</param> /// <param name="args">The args.</param> public static void Error(string text, params object[] args) { LogMessage("ERROR", string.Format(text, args)); } /// <summary> /// Logs an error message. /// </summary> /// <param name="message">The message.</param> public static void Error(object message) { LogMessage("ERROR", message); } /// <summary> /// Logs a fatal error message. /// </summary> /// <param name="text">The text.</param> /// <param name="args">The args.</param> public static void Fatal(string text, params object[] args) { LogMessage("FATAL", string.Format(text, args)); } /// <summary> /// Logs a fatal error message. /// </summary> /// <param name="message">The message.</param> public static void Fatal(object message) { LogMessage("FATAL", message); } /// <summary> /// Logs bugs. /// </summary> /// <param name="text">The text.</param> /// <param name="args">The args.</param> public static void Bug(string text, params object[] args) { string message = string.Format(text, args); LogMessage("BUG", message); BugNet(message); } /// <summary> /// Log bugs. /// </summary> /// <param name="message">The message.</param> public static void Bug(object message) { LogMessage("BUG", message); BugNet(message); } /// <summary> /// Report a bugs to online admins. /// </summary> /// <param name="text">The text.</param> private static void BugNet(object text) { foreach (Player player in Lists.Players) { if (player.Powers[Powers.BugNet]) { player.WriteLine("BUGNET> {0}", text); } } } } }