12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- 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());
- }
- }
- }
|