While I've named it ErrorManager; it could just as easily have been named TextLogManager because it can be use for so much more than just errors.
Here's the top part of the C# file - see below for download link
/// <summary>
/// ErrorLogManager
/// - Primary: used to log errors to text file
///
/// Created by: Gregory Meach
/// Date: June 23, 2014
/// Version: 1.0 (initial release)
///
/// License: Do what you want, no credit necessary
/// Liability: None whatsoever.
///
/// Example: (called from ANY other class)
/// ErrorLogManager.sharedManager.UpdateErrorLog("fakeMethod","not found",ErrorLogManager.sharedManager.GetErrorDate());
/// Note:
/// GetErrorDate() helper returns "now" as a string
///
/// </summary>
public class ErrorLogManager : MonoBehaviour {
#region ErrorLog
[Serializable]
public class ErrorData {
public string method;
public string error;
public string dateString;
}
public List<ErrorData> ErrorList = new List<ErrorData>();
private string currentLogName = string.Empty;
private string logInitText = string.Empty;
private bool isFirstSave = true;
// Set this to whatever name you want to use
private string errorLogName = "Game_ErrorLog";
// Set this to the maximum log entries before they are auto-saved
private int maxLogEntriesBeforeSave = 30;
// Set this to TRUE to overwrite the log file on startup
private bool clearErrorLogOnStartup = false;
// Set this to FALSE to overwrite the log file on startup
private bool useTimeStampInFileName = true;
// Helper methods
public string GetErrorDate() { return System.DateTime.Now.ToString("s"); }
public string GetSavedDataPath() { return (Application.persistentDataPath + Path.DirectorySeparatorChar); }
public string GetFileDate() {
string dateString = System.DateTime.Now.ToString("d");
dateString = dateString.Replace("/",".");
return dateString;
}
public void UpdateErrorLog(string callingMethod, string errorMsg, string errorDate) {
ErrorData newError = new ErrorData();
newError.method = callingMethod;
newError.error = errorMsg;
newError.dateString = errorDate;
ErrorList.Add(newError);
if (ErrorList.Count > maxLogEntriesBeforeSave)
FlushErrorLog();
}
Here's the package link: ErrorManager_v1.0.unitypackage