Ejemplo n.º 1
0
        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");
            }
        }
Ejemplo n.º 2
0
        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());
            }
        }