diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-10-13 17:22:25 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-10-13 17:22:25 -0400 |
| commit | 3d3876c9a94b86e25b6d663d65285e220fc93bcc (patch) | |
| tree | 578ce5e8a146bc842d285e3612024d6ee8ed67dd | |
| parent | 645a41b193a958672a33208b0768cc1d25a4d852 (diff) | |
better crash logging
6 files changed, 66 insertions, 13 deletions
diff --git a/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs b/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs index 4d1a9c0d4..b75234107 100644 --- a/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs +++ b/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs @@ -471,7 +471,10 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager foreach (var pair in options.RequestHeaders.ToList()) { - message.Headers.Add(pair.Key, pair.Value); + if (!message.Headers.TryAddWithoutValidation(pair.Key, pair.Value)) + { + _logger.Error("Unable to add request header {0} with value {1}", pair.Key, pair.Value); + } } return message; @@ -484,9 +487,31 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager /// <returns>System.Nullable{System.Int64}.</returns> private long? GetContentLength(HttpResponseMessage response) { - IEnumerable<string> lengthValues; + IEnumerable<string> lengthValues = null; + + // Seeing some InvalidOperationException here under mono + try + { + response.Headers.TryGetValues("content-length", out lengthValues); + } + catch (InvalidOperationException ex) + { + _logger.ErrorException("Error accessing response.Headers.TryGetValues Content-Length", ex); + } + + if (lengthValues == null) + { + try + { + response.Content.Headers.TryGetValues("content-length", out lengthValues); + } + catch (InvalidOperationException ex) + { + _logger.ErrorException("Error accessing response.Content.Headers.TryGetValues Content-Length", ex); + } + } - if (!response.Headers.TryGetValues("content-length", out lengthValues) && !response.Content.Headers.TryGetValues("content-length", out lengthValues)) + if (lengthValues == null) { return null; } diff --git a/MediaBrowser.Mono.userprefs b/MediaBrowser.Mono.userprefs index c2875801e..b773d7aef 100644 --- a/MediaBrowser.Mono.userprefs +++ b/MediaBrowser.Mono.userprefs @@ -1,23 +1,25 @@ <Properties> <MonoDevelop.Ide.Workspace ActiveConfiguration="Debug|x86" /> - <MonoDevelop.Ide.Workbench ActiveDocument="MediaBrowser.Server.Mono\FFMpeg\FFMpegDownloadInfo.cs"> + <MonoDevelop.Ide.Workbench ActiveDocument="MediaBrowser.Model\Web\QueryStringDictionary.cs"> <Files> <File FileName="MediaBrowser.Server.Implementations\HttpServer\HttpServer.cs" Line="1" Column="1" /> <File FileName="MediaBrowser.Server.Mono\Networking\NetworkManager.cs" Line="1" Column="1" /> <File FileName="MediaBrowser.ServerApplication\ApplicationHost.cs" Line="1" Column="1" /> <File FileName="MediaBrowser.Server.Mono\Native\NativeApp.cs" Line="1" Column="1" /> <File FileName="MediaBrowser.Server.Mono\Program.cs" Line="1" Column="1" /> - <File FileName="MediaBrowser.ServerApplication\FFMpeg\FFMpegDownloader.cs" Line="1" Column="1" /> - <File FileName="MediaBrowser.Server.Mono\FFMpeg\FFMpegDownloadInfo.cs" Line="21" Column="1" /> + <File FileName="MediaBrowser.ServerApplication\FFMpeg\FFMpegDownloader.cs" Line="31" Column="30" /> + <File FileName="MediaBrowser.Server.Mono\FFMpeg\FFMpegDownloadInfo.cs" Line="1" Column="1" /> + <File FileName="MediaBrowser.Model\Web\QueryStringDictionary.cs" Line="26" Column="10" /> </Files> <Pads> <Pad Id="ProjectPad"> <State expanded="True"> - <Node name="MediaBrowser.Model" expanded="True" /> + <Node name="MediaBrowser.Model" expanded="True"> + <Node name="References" expanded="True" selected="True" /> + <Node name="Web" expanded="True" /> + </Node> <Node name="MediaBrowser.Server.Mono" expanded="True"> - <Node name="FFMpeg" expanded="True"> - <Node name="FFMpegDownloadInfo.cs" selected="True" /> - </Node> + <Node name="FFMpeg" expanded="True" /> </Node> </State> </Pad> diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj index f10eff166..7dab3aee5 100644 --- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj +++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj @@ -259,7 +259,6 @@ </ItemGroup> <ItemGroup> <None Include="packages.config" /> - <None Include="sqlite3.dll" /> </ItemGroup> <ItemGroup> <Content Include="swagger-ui\css\hightlight.default.css"> diff --git a/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj b/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj index de3d2d0cb..2c99f3370 100644 --- a/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj +++ b/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj @@ -135,5 +135,8 @@ <None Include="tray.png"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> + <None Include="sqlite3.dll"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> </ItemGroup> </Project>
\ No newline at end of file diff --git a/MediaBrowser.Server.Mono/Program.cs b/MediaBrowser.Server.Mono/Program.cs index 2c2390a81..ea6cca6ff 100644 --- a/MediaBrowser.Server.Mono/Program.cs +++ b/MediaBrowser.Server.Mono/Program.cs @@ -206,7 +206,7 @@ namespace MediaBrowser.Server.Mono { var exception = (Exception)e.ExceptionObject; - _logger.ErrorException("UnhandledException", exception); + LogUnhandledException(exception); if (!Debugger.IsAttached) { @@ -214,6 +214,19 @@ namespace MediaBrowser.Server.Mono } } + private static void LogUnhandledException(Exception ex) + { + _logger.ErrorException("UnhandledException", ex); + + _appHost.LogManager.Flush (); + + var path = Path.Combine(_appHost.ServerConfigurationManager.ApplicationPaths.LogDirectoryPath, "crash_" + Guid.NewGuid() + ".txt"); + + var builder = LogHelper.GetLogMessage(ex); + + File.WriteAllText(path, builder.ToString()); + } + /// <summary> /// Performs the update if needed. /// </summary> diff --git a/MediaBrowser.ServerApplication/MainStartup.cs b/MediaBrowser.ServerApplication/MainStartup.cs index f61b0f1d1..c6bd65750 100644 --- a/MediaBrowser.ServerApplication/MainStartup.cs +++ b/MediaBrowser.ServerApplication/MainStartup.cs @@ -398,7 +398,7 @@ namespace MediaBrowser.ServerApplication { var exception = (Exception)e.ExceptionObject; - _logger.ErrorException("UnhandledException", exception); + LogUnhandledException(exception); _appHost.LogManager.Flush(); @@ -413,6 +413,17 @@ namespace MediaBrowser.ServerApplication } } + private static void LogUnhandledException(Exception ex) + { + _logger.ErrorException("UnhandledException", ex); + + var path = Path.Combine(_appHost.ServerConfigurationManager.ApplicationPaths.LogDirectoryPath, "crash_" + Guid.NewGuid() + ".txt"); + + var builder = LogHelper.GetLogMessage(ex); + + File.WriteAllText(path, builder.ToString()); + } + /// <summary> /// Performs the update if needed. /// </summary> |
