예제 #1
0
        private void UpdateContent()
        {
            try {
                using (StreamReader reader = new StreamReader(new FileStream(filename,
                                                                             FileMode.Open, FileAccess.Read, FileShare.ReadWrite))) {
                    reader.BaseStream.Seek(lastOffset, SeekOrigin.Begin);

                    string line    = "";
                    bool   changed = false;
                    while ((line = reader.ReadLine()) != null)
                    {
                        changed = true;
                        LogMessageTextBox.AppendText(line + Environment.NewLine);
                    }

                    if (changed)
                    {
                        LogMessageTextBox.ScrollToCaret();
                    }

                    lastOffset = reader.BaseStream.Position;
                }
            } catch (FileNotFoundException) {
            }

            this.Text = I18N.GetString("Log Viewer") +
                        $" [in: {Utils.FormatBandwidth(controller.inboundCounter)}, out: {Utils.FormatBandwidth(controller.outboundCounter)}]";
        }
예제 #2
0
        public LogForm(ShadowsocksController controller)
        {
            this.controller = controller;

            InitializeComponent();
            Icon = Icon.FromHandle(Resources.ssw128.GetHicon());

            var nLogConfig = NLogConfig.LoadXML();

            try
            {
                this.filename = nLogConfig.GetLogFileName();
            }
            catch (Exception)
            {
                // failed to get the file name
            }
            if (string.IsNullOrEmpty(this.filename))
            {
                LogMessageTextBox.AppendText("Cannot get the log file name from NLog config file. Please check if the nlog config file exists with corresponding XML nodes.");
            }

            LogViewerConfig config = controller.GetConfigurationCopy().logViewer;

            topMostTrigger              = config.topMost;
            wrapTextTrigger             = config.wrapText;
            toolbarTrigger              = config.toolbarShown;
            LogMessageTextBox.BackColor = config.BackgroundColor;
            LogMessageTextBox.ForeColor = config.TextColor;
            LogMessageTextBox.Font      = config.Font;

            controller.TrafficChanged += controller_TrafficChanged;

            UpdateTexts();
        }
예제 #3
0
        private void InitContent()
        {
            if (string.IsNullOrEmpty(filename))
            {
                return;
            }
            using (StreamReader reader = new StreamReader(new FileStream(filename,
                                                                         FileMode.Open, FileAccess.Read, FileShare.ReadWrite)))
            {
                if (reader.BaseStream.Length > BACK_OFFSET)
                {
                    reader.BaseStream.Seek(-BACK_OFFSET, SeekOrigin.End);
                    reader.ReadLine();
                }

                string        line       = "";
                StringBuilder appendText = new StringBuilder(1024);
                while ((line = reader.ReadLine()) != null)
                {
                    appendText.AppendLine(line);
                }

                LogMessageTextBox.AppendText(appendText.ToString());
                LogMessageTextBox.ScrollToCaret();

                lastOffset = reader.BaseStream.Position;
            }
        }
예제 #4
0
파일: Log.cs 프로젝트: Soldie/greendot1
        private void UpdateContent()
        {
            try
            {
                using (StreamReader reader = new StreamReader(new FileStream(filename,
                                                                             FileMode.Open, FileAccess.Read, FileShare.ReadWrite)))
                {
                    reader.BaseStream.Seek(lastOffset, SeekOrigin.Begin);

                    string        line       = "";
                    bool          changed    = false;
                    StringBuilder appendText = new StringBuilder(128);
                    while ((line = reader.ReadLine()) != null)
                    {
                        changed = true;
                        appendText.Append(line + Environment.NewLine);
                    }

                    if (changed)
                    {
                        LogMessageTextBox.AppendText(appendText.ToString());
                        LogMessageTextBox.ScrollToCaret();
                    }

                    lastOffset = reader.BaseStream.Position;
                }
            }
            catch (FileNotFoundException)
            {
            }

            lblWindowTitle.Text = "运行日志" +
                                  $" [in: {Utils.FormatBytes(this.mainController.InboundCounter)},out: {Utils.FormatBytes(this.mainController.OutboundCounter)}]";
        }
예제 #5
0
        private void UpdateContent()
        {
            try
            {
                using (StreamReader reader = new StreamReader(new FileStream(filename,
                                                                             FileMode.Open, FileAccess.Read, FileShare.ReadWrite)))
                {
                    reader.BaseStream.Seek(lastOffset, SeekOrigin.Begin);

                    string        line       = "";
                    bool          changed    = false;
                    StringBuilder appendText = new StringBuilder(128);
                    while ((line = reader.ReadLine()) != null)
                    {
                        changed = true;
                        appendText.Append(line + Environment.NewLine);
                    }

                    if (changed)
                    {
                        LogMessageTextBox.AppendText(appendText.ToString());
                        LogMessageTextBox.ScrollToCaret();
                    }

                    lastOffset = reader.BaseStream.Position;
                }
            }
            catch (FileNotFoundException)
            {
            }

            this.Text = I18N.GetString("Log Viewer") +
                        $" [in: {Utils.FormatBytes(controller.InboundCounter)}, out: {Utils.FormatBytes(controller.OutboundCounter)}, TCP conn: {controller.TCPConnectionCounter}/{TCPRelay.MAX_HANDLER_NUM}]";
        }
예제 #6
0
 private void DoClearLogs()
 {
     try
     {
         File.Delete(filename);
     }
     catch { }
     lastOffset = 0;
     LogMessageTextBox.Clear();
 }
예제 #7
0
        private void TriggerWrapText()
        {
            wrapTextTriggerLock = true;

            wrapTextTrigger            = !wrapTextTrigger;
            LogMessageTextBox.WordWrap = wrapTextTrigger;
            LogMessageTextBox.ScrollToCaret();
            WrapTextMenuItem.Checked = WrapTextCheckBox.Checked = wrapTextTrigger;

            wrapTextTriggerLock = false;
        }
예제 #8
0
        private void InitContent()
        {
            using (StreamReader reader = new StreamReader(new FileStream(filename,
                                                                         FileMode.Open, FileAccess.Read, FileShare.ReadWrite)))
            {
                if (reader.BaseStream.Length > BACK_OFFSET)
                {
                    reader.BaseStream.Seek(-BACK_OFFSET, SeekOrigin.End);
                    reader.ReadLine();
                }

                string line = "";
                while ((line = reader.ReadLine()) != null)
                {
                    LogMessageTextBox.AppendText(line + Environment.NewLine);
                }

                LogMessageTextBox.ScrollToCaret();

                lastOffset = reader.BaseStream.Position;
            }
        }
예제 #9
0
        private void UpdateContent()
        {
            this.Text = I18N.GetString("Log Viewer") +
                        $" [in: {Utils.FormatBytes(controller.InboundCounter)}, out: {Utils.FormatBytes(controller.OutboundCounter)}]";

            if (string.IsNullOrEmpty(filename) || !File.Exists(filename))
            {
                return;
            }
            try
            {
                using (StreamReader reader = new StreamReader(new FileStream(filename,
                                                                             FileMode.Open, FileAccess.Read, FileShare.ReadWrite)))
                {
                    reader.BaseStream.Seek(lastOffset, SeekOrigin.Begin);

                    string        line       = "";
                    bool          changed    = false;
                    StringBuilder appendText = new StringBuilder(128);
                    while ((line = reader.ReadLine()) != null)
                    {
                        changed = true;
                        appendText.AppendLine(line);
                    }

                    if (changed)
                    {
                        LogMessageTextBox.AppendText(appendText.ToString());
                        LogMessageTextBox.ScrollToCaret();
                    }

                    lastOffset = reader.BaseStream.Position;
                }
            }
            catch (FileNotFoundException)
            {
            }
        }
예제 #10
0
        private void UpdateContent()
        {
            using (StreamReader reader = new StreamReader(new FileStream(_filename,
                                                                         FileMode.Open, FileAccess.Read, FileShare.ReadWrite)))
            {
                reader.BaseStream.Seek(_lastOffset, SeekOrigin.Begin);

                string line;
                bool   changed = false;
                while ((line = reader.ReadLine()) != null)
                {
                    changed = true;
                    LogMessageTextBox.AppendText(line + "\r\n");
                }

                if (changed)
                {
                    LogMessageTextBox.ScrollToCaret();
                }

                _lastOffset = reader.BaseStream.Position;
            }
        }
예제 #11
0
 private void DoCleanLogs()
 {
     Logging.clear();
     lastOffset = 0;
     LogMessageTextBox.Clear();
 }
예제 #12
0
 private void LogForm_Shown(object sender, EventArgs e)
 {
     LogMessageTextBox.ScrollToCaret();
 }
예제 #13
0
 private void CleanLogsButton_Click(object sender, EventArgs e)
 {
     LogMessageTextBox.Clear();
 }
예제 #14
0
 private void WrapTextCheckBox_CheckedChanged(object sender, EventArgs e)
 {
     LogMessageTextBox.WordWrap = WrapTextCheckBox.Checked;
     LogMessageTextBox.ScrollToCaret();
 }
예제 #15
0
 private void DoCleanLogs()
 {
     LogMessageTextBox.Clear();
 }