0

我想为和添加框架创建一个简单的日志文件。
这是我到目前为止发现的内容。> br> 这个类是从另一个在循环中执行的类调用的,所以每次循环结束时它都会调用这个 calss 并且这个类将写入一个日志(及时创建的数据)。但是,我得到的只是每次在 txt 文件中写入一个新字符串,它只会替换第一个字符串。如何在不替换旧字符串的情况下在新行中添加新字符串?
我读了,environment.newline但我不明白。

    private void logFile()
    {
        StreamWriter logfile = null;
        logfile = File.CreateText(Server.MapPath("/CCTV_Files/log.txt"));
        try
        {
            logfile.Write(String.Format("{0:yyyyMMdd_hhmmss}", DateTime.Now) + " Frame added");
        }
        catch (IOException e)
        {
            Console.WriteLine(e);
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
        }
        finally
        {
            if (logfile != null)
            {
                logfile.Close();
            }
        }
     }
4

6 回答 6

3

你需要使用 File.AppendText(),这里是msdn帮助

private void logFile()
    {
        StreamWriter logfile = null;
        logfile = File.AppendText(Server.MapPath("/CCTV_Files/log.txt"));
        try
        {
            logfile.Write(String.Format("{0:yyyyMMdd_hhmmss}", DateTime.Now) + " Frame added");
        }
        catch (IOException e)
        {
            Console.WriteLine(e);
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
        }
        finally
        {
            if (logfile != null)
            {
                logfile.Close();
            }
        }
     }
于 2012-11-06T05:33:11.960 回答
2

使用File.AppendText

logfile = File.AppendText(Server.MapPath("/CCTV_Files/log.txt"));

而不是File.CreateText

logfile = File.CreateText(Server.MapPath("/CCTV_Files/log.txt"));
于 2012-11-06T05:33:10.347 回答
2

此方法等效于将 append 参数设置为 false 的 StreamWriter(String, Boolean) 构造函数重载。如果 path 指定的文件不存在,则创建该文件。如果文件确实存在,则其内容将被覆盖。

选项 1:您可以将 StreamWriter 与 append as True 一起使用。

public StreamWriter(字符串路径,布尔追加)

StreamWriter sw = new StreamWriter(fileName, true)

选项 2:您也可以选择使用 File.AppendText。

参考:

http://msdn.microsoft.com/en-us/library/system.io.file.createtext.aspx

http://msdn.microsoft.com/en-us/library/36b035cb.aspx

http://msdn.microsoft.com/en-us/library/system.io.file.appendtext.aspx

于 2012-11-06T05:33:29.410 回答
1

尝试这个。

   string path = your file path;
   using(StreamWriter sw = new StreamWriter(path,true))
           {

                    sw.WriteLine("string here");
           }
于 2012-11-06T05:33:09.187 回答
0

您可以在附加模块中打开日志文件。

http://msdn.microsoft.com/en-us/library/3zc0w663.aspx

这将很有用

http://roque-patrick.com/windows/final/bbl0190.html

于 2012-11-06T05:32:02.153 回答
0

为什么要费心打开文件和管理它们!使用 log4net 库: log4net

太棒了,只需几行配置,您就可以拥有日志文件,其中包含完整的信息和详细信息。

private static readonly ILog log = LogManager.GetLogger(typeof(Foo));

///In your method:
log.Info("Information");
log.Error("Error happened");
log.Debug("bla bla");
///etc.

这是日志文件的示例:

176 [main] INFO  examples.Sort - Populating an array of 2 elements in reverse order.
225 [main] INFO  examples.SortAlgo - Entered the sort method.
262 [main] DEBUG SortAlgo.OUTER i=1 - Outer loop.
276 [main] DEBUG SortAlgo.SWAP i=1 j=0 - Swapping intArray[0] = 1 and intArray[1] = 0
290 [main] DEBUG SortAlgo.OUTER i=0 - Outer loop.
304 [main] INFO  SortAlgo.DUMP - Dump of integer array:
317 [main] INFO  SortAlgo.DUMP - Element [0] = 0
331 [main] INFO  SortAlgo.DUMP - Element [1] = 1
343 [main] INFO  examples.Sort - The next log statement should be an error message.
346 [main] ERROR SortAlgo.DUMP - Tried to dump an uninitialized array.
467 [main] INFO  examples.Sort - Exiting main method.

如果您坚持使用自己的方式,只需使用以下代码:

logfile = File.AppendText(Server.MapPath("/CCTV_Files/log.txt"));

于 2012-11-06T05:40:03.103 回答