public static void Write(string module, Log_Type log_type, string log_message) { //File operations sometimes go wrong.As a result i used loop for try again //You can set parameter Log_Directory in Write method or open a variable in Settings (Properties.Settings.Default.Log_Directory) //I used StringBuilder for use Ram efficiently string directory = ""; string file_name = ""; for (int i = 0; i < 5; i++) { try { StringBuilder stringBuilder = new StringBuilder(); if (Properties.Settings.Default.Log_Directory.Equals("")) { stringBuilder.Append(Directory.GetCurrentDirectory()); stringBuilder.Append("\\Log"); directory = stringBuilder.ToString(); stringBuilder = new StringBuilder(); } else { directory = Properties.Settings.Default.Log_Directory; } stringBuilder.Append(System.Reflection.Assembly.GetEntryAssembly().GetName().Name); stringBuilder.Append(DateTime.Now.ToString("yyyyMMdd")); stringBuilder.Append(".log"); file_name = stringBuilder.ToString(); stringBuilder = new StringBuilder(); if (!Directory.Exists(directory)) { Directory.CreateDirectory(directory); } StreamWriter file; stringBuilder.Append(directory); stringBuilder.Append("\\"); stringBuilder.Append(file_name); file = File.AppendText(stringBuilder.ToString()); stringBuilder = new StringBuilder(); stringBuilder.Append(DateTime.Now.ToString()); stringBuilder.Append(" "); stringBuilder.Append(module); stringBuilder.Append(" "); stringBuilder.Append(log_type.ToString()); stringBuilder.Append(" "); stringBuilder.Append(log_message); file.WriteLine(stringBuilder.ToString()); file.Close(); break; } catch { } } }
static void TOFILE(Type Class, Log_Type Type, string Message) { if (!Launched) { Launched = true; ClearLogs(); } string[] Paths = new string[3]; Paths[0] = "Main"; switch (ModeFile) { case File_Mode.Single: break; case File_Mode.SpreadByClass: Paths[1] = "/SpreadByClass/" + Class; break; case File_Mode.SpreadByType: Paths[2] = "/SpreadByType/" + Type.ToString().ToLower(); break; case File_Mode.All: Paths[1] = "/SpreadByClass/" + Class; Paths[2] = "/SpreadByType/" + Type.ToString().ToLower(); break; default: break; } for (int i = 0; i < Paths.Length; i++) { if (Paths[i] != null) { FileUtils.AppendFile(BasePath + Paths[i] + ".log", Message, "|" + Paths[i] + ".log" + "|\n|====================|"); } } }
static void LogMessage(Type Class, string Message, Log_Type Type) { string FullMessage = "(CLASS : " + Class.ToString() + ") [" + Type.ToString().ToUpper() + "]: " + Message; if (Mode == Log_Mode.File || Mode == Log_Mode.Mixed) { //LogToFile(FullMessage); TOFILE(Class, Type, FullMessage); } if (Mode == Log_Mode.Console || Mode == Log_Mode.Mixed) { UnityEngine.Debug.Log(FullMessage); } }