0

今日は、ログをテキストファイルログに書き込んでいます。

/*----------------------------------------------------------------
 * Module Name  : Logger
 * Description  : A logger
 * Author       : Danny
 * Date         : 10/02/2010
 * Revision     : 1.00
 * --------------------------------------------------------------*/


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Windows.Forms;
using System.Drawing;
using System.Threading;
/*
 *  Introduction :
 * 
 *  This module is a logger. any module can use this 
 *  module to log its actions.
 * 
 * 
 * */

        /*----------------------------------------
         *   P R I V A T E    D E F I N I T I O N S 
         * ---------------------------------------*/


namespace DannyGeneral
{
    class Logger
    {
        /*----------------------------------------
         *   P R I V A T E     C O N S T A N T S 
         * ---------------------------------------*/
        static string log_file_name = @"\logger.txt";
        static string full_path_log_file_name;
        static string path_log;
        static Mutex mut;
        /*----------------------------------------
         *   P R I V A T E     V A R I A B L E S 
         * ---------------------------------------*/

        /*---------------------------------
         *   P U B L I C   M E T H O D S 
         * -------------------------------*/

        /*----------------------------------------------------------
         * Function     : Logger
         * Description  : static Constructor
         * Parameters   : none
         * Return       : none
         * --------------------------------------------------------*/
        static Logger()
        {
            mut = new Mutex();
            path_log = Path.GetDirectoryName(Application.LocalUserAppDataPath)+ @"\log";
            if (!Directory.Exists(path_log))
            {
                Directory.CreateDirectory(path_log);
            }
            full_path_log_file_name = path_log + log_file_name;
        }

        /*----------------------------------------------------------
         * Function     : Write
         * Description  : writes a string to the log file
         *                This functions will add time and date and
         *                end of line chars to the string written to
         *                the file.
         * Parameters   : string to write to the file.
         * Return       : none
         * --------------------------------------------------------*/
        public static void Write(string str)
        {
            if (mut.WaitOne() == false)
            {
                return;
            }
            else
            {

                using (StreamWriter sw = new StreamWriter(full_path_log_file_name, true))
                {
                    sw.Write(DateTime.Now.ToShortDateString() + "--" + DateTime.Now.ToShortTimeString() + " ==> " + str);
                    sw.WriteLine();
                    sw.Close();
                }
            }
            mut.ReleaseMutex();
        }
        public static void exist()
        {
            if (!File.Exists(path_log + log_file_name))
            {
                StreamWriter sw = new StreamWriter(path_log + log_file_name);
                sw.Write(DateTime.Now.ToShortDateString()+"--"+DateTime.Now.ToShortTimeString()+" ==> "+"First Time The Log File Was Created"+Environment.NewLine);
                sw.WriteLine();
                sw.Close();
            }
        }
        public static void newEmptyLine()
        {
            StreamWriter sw = new StreamWriter(path_log + log_file_name,true);
            sw.WriteLine();
            sw.Close();
        }

        public static string LoggerPath()
        {
            string path = path_log + log_file_name;
            return path;
        }

        /*---------------------------------
         *   P R I V A T E    M E T H O D S 
         * -------------------------------*/

    }



}

代わりに、プロセスとnotepad.exeを使用してプログラムの実行中に単純なテキストファイルに書き込み、ファイルを表示する代わりに、ログファイルを表示する別の方法があると思いましたが、内部に色がありますか?richTextBoxのようなものなので、ファイルの各行を別の色でペイントできます。

そして、それは今のメモ帳のように速く開かれるでしょう。

4

4 に答える 4

3

「色付き」のテキストファイルを作成することはできません。プレーンテキストにはフォーマットがありません。

フォーマットを含むフォーマットとして記述する必要があります。たとえば、RTFやHTMLが機能します。

ログとプログラミングエディタ(たとえば、notepad ++)をカスタマイズして、構文の強調表示を行うことができる場合があります。

于 2012-09-01T19:45:30.840 に答える
2

メモ帳と純粋なテキストは色を理解しません。

それらがあなたにとって重要であるならば、あなたはある種のフォーマットされたファイルとしてログを書く必要があります。例:HTML、RTFなど。

于 2012-09-01T19:44:08.990 に答える
0

構成可能な色の強調表示を備えた優れたログファイルビューア... http://www.baremetalsoft.com/baretail/

于 2012-09-01T20:09:29.223 に答える
0

ログファイルを表示するための独自のアプリケーション内ダイアログ/フォームがある場合は、解析してログエントリ行の色付けに使用する特定の区切りテキスト情報を書き込むこともできます。

私はまさにこれを行う1つのアプリケーションを作成しました。

ログファイルは、拡張子が.logのプレーンASCIIテキストでした。.logファイルの場合、通常はWindowsのメモ帳に関連付けられているため、そのファイルタイプの業界標準であるプレーンASCIIテキストを使用します。

ログエントリは、日付/時刻、エントリタイプ(情報、警告、エラーなど)、およびエントリテキストメッセージでタブ区切りとしてフォーマットされました。

ユーザーがアプリケーションで[ログの表示]フォームを開くと、タブ区切りのログファイルデータを読み取って解析し、エントリタイプフィールドを使用して複数列のListViewコントロールにすべてのエントリを入力し、ListViewアイテムのアイコン画像を決定します。およびそのテキストの色。情報の場合は黒、警告の場合は黄色、エラーの場合は赤。

于 2013-07-15T19:25:22.420 に答える