internal static void InitializeLog() { _logDir = RegUtil.LogPath; if (_logDir == null) { _logDir = Application.StartupPath; } string logName = "Omea-" + DateTime.Now.ToString("yyMMdd-HHmm") + ".log"; if (_logDir != "") { _logName = Path.Combine(_logDir, logName); try { Directory.CreateDirectory(_logDir); StreamWriter fs = File.CreateText(_logName); fs.Close(); } catch (Exception) { // don't fail if the log dir is set to a folder where we do not have write access _logDir = ""; } } if (_logDir != "") { _traceListener = new OmniaMeaTraceListener(_logName); Debug.Listeners.Add(_traceListener); Trace.WriteLine("Starting Omea"); } }
public static void SubmitErrorLog() { if (_logName == null) { return; } _traceListener.Close(); Debug.Listeners.Remove(_traceListener); Exception submitError = null; using (new WaitCursorDisplayer()) { try { string gzLogName = _logName + ".gz"; Stream fileStream = new FileStream(gzLogName, FileMode.Create); GZipOutputStream gzStream = new GZipOutputStream(fileStream); Stream logStream = new FileStream(_logName, FileMode.Open); if (logStream.Length > 1000000) { logStream.Position = logStream.Length - 1000000; } int bytesRemaining = (int)(logStream.Length - logStream.Position); byte[] buffer = new byte[65536]; while (bytesRemaining > 0) { int blockSize = Math.Min(bytesRemaining, 65536); bytesRemaining -= blockSize; logStream.Read(buffer, 0, blockSize); gzStream.Write(buffer, 0, blockSize); } logStream.Close(); gzStream.Close(); WebClient client = new WebClient(); client.UploadFile("http://collect-it.jetbrains.net/" + _usageLogId, "POST", gzLogName); File.Delete(gzLogName); } catch (Exception ex) { submitError = ex; } } _traceListener = new OmniaMeaTraceListener(_logName); Debug.Listeners.Add(_traceListener); if (submitError != null) { Trace.WriteLine("Error submitting log: " + submitError.ToString()); } }