diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2017-02-24 15:21:37 -0500 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2017-02-24 15:21:37 -0500 |
| commit | a73eeac6869edc199c4d0915d07b6847d0c95524 (patch) | |
| tree | 378241f264bbd6106ea6e958e5bf346d1f76b86e /Emby.Server.Implementations/Logging/UnhandledExceptionWriter.cs | |
| parent | c456490de43082f008dd592345e76cf75db1ad0a (diff) | |
| parent | cd6b7f3bdc5bcbc6c68131cc40b71b68ac1b73a6 (diff) | |
Merge branch 'master' of https://github.com/MediaBrowser/Emby
Diffstat (limited to 'Emby.Server.Implementations/Logging/UnhandledExceptionWriter.cs')
| -rw-r--r-- | Emby.Server.Implementations/Logging/UnhandledExceptionWriter.cs | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/Emby.Server.Implementations/Logging/UnhandledExceptionWriter.cs b/Emby.Server.Implementations/Logging/UnhandledExceptionWriter.cs new file mode 100644 index 000000000..5183f3a0b --- /dev/null +++ b/Emby.Server.Implementations/Logging/UnhandledExceptionWriter.cs @@ -0,0 +1,43 @@ +using MediaBrowser.Common.Configuration; +using MediaBrowser.Model.Logging; +using System; +using System.IO; +using MediaBrowser.Model.IO; + +namespace Emby.Server.Implementations.Logging +{ + public class UnhandledExceptionWriter + { + private readonly IApplicationPaths _appPaths; + private readonly ILogger _logger; + private readonly ILogManager _logManager; + private readonly IFileSystem _fileSystem; + private readonly IConsoleLogger _console; + + public UnhandledExceptionWriter(IApplicationPaths appPaths, ILogger logger, ILogManager logManager, IFileSystem fileSystem, IConsoleLogger console) + { + _appPaths = appPaths; + _logger = logger; + _logManager = logManager; + _fileSystem = fileSystem; + _console = console; + } + + public void Log(Exception ex) + { + _logger.ErrorException("UnhandledException", ex); + _logManager.Flush(); + + var path = Path.Combine(_appPaths.LogDirectoryPath, "unhandled_" + Guid.NewGuid() + ".txt"); + _fileSystem.CreateDirectory(Path.GetDirectoryName(path)); + + var builder = LogHelper.GetLogMessage(ex); + + // Write to console just in case file logging fails + _console.WriteLine("UnhandledException"); + _console.WriteLine(builder.ToString()); + + _fileSystem.WriteAllText(path, builder.ToString()); + } + } +} |
