টেক্সট ফাইলে কনসোল.ওরাইটলাইন আউটপুট কীভাবে সংরক্ষণ করবেন


98

আমার একটি প্রোগ্রাম রয়েছে যা কমান্ড লাইন কনসোলে বিভিন্ন ফলাফল দেয়।

আমি কীভাবে কোনও StreamReaderবা অন্যান্য কৌশল ব্যবহার করে কোনও পাঠ্য ফাইলে আউটপুট সংরক্ষণ করব ?

System.Collections.Generic.IEnumerable<String> lines = File.ReadAllLines(@"C:\Test\ntfs8.txt");

foreach (String r in lines.Skip(1))
{
    String[] token = r.Split(',');
    String[] datetime = token[0].Split(' ');
    String timeText = datetime[4];
    String actions = token[2];
    Console.WriteLine("The time for this array is: " + timeText);
    Console.WriteLine(token[7]);
    Console.WriteLine(actions);
    MacActions(actions);
    x = 1;
    Console.WriteLine("================================================");
}

if (x == 2)
{
    Console.WriteLine("The selected time does not exist within the log files!");
}

System.IO.StreamReader reader = ;
string sRes = reader.ReadToEnd();
StreamWriter SW;
SW = File.CreateText("C:\\temp\\test.bodyfile");
SW.WriteLine(sRes);
SW.Close();
Console.WriteLine("File Created");
reader.Close();

উত্তর:


151

এই নিবন্ধটি থেকে এই উদাহরণটি ব্যবহার করে দেখুন - কনসোল আউটপুটটিকে কোনও ফাইলে পুনঃনির্দেশিত করে De

using System;
using System.IO;

static public void Main ()
{
    FileStream ostrm;
    StreamWriter writer;
    TextWriter oldOut = Console.Out;
    try
    {
        ostrm = new FileStream ("./Redirect.txt", FileMode.OpenOrCreate, FileAccess.Write);
        writer = new StreamWriter (ostrm);
    }
    catch (Exception e)
    {
        Console.WriteLine ("Cannot open Redirect.txt for writing");
        Console.WriteLine (e.Message);
        return;
    }
    Console.SetOut (writer);
    Console.WriteLine ("This is a line of text");
    Console.WriteLine ("Everything written to Console.Write() or");
    Console.WriteLine ("Console.WriteLine() will be written to a file");
    Console.SetOut (oldOut);
    writer.Close();
    ostrm.Close();
    Console.WriteLine ("Done");
}

4
এটি আমার স্ট্যান্ডার্ড টেস্ট কনসোল টেমপ্লেটে যুক্ত করেছে।
— ভালামাস

এটি কি কেবলমাত্র অ্যাপকনফাইগ ব্যবহার করেই সম্ভব, প্রোগ্রামিকভাবে নয়, বিভাগ সিস্টেম.ডায়াগনস্টিকগুলি? কোন নমুনা?
— কিকিনেট

এটি ব্যবহার করে ভাল না ?
— জন

আমি একটি ছোট্ট ইউটিলিটি ক্লাস লিখেছি ( DebugLogger) যা আমি আমার ইউনিট পরীক্ষার সমস্তগুলিতে অন্তর্ভুক্ত করি এবং একটি হিসাবে আরম্ভ করি private static readonly। ইন [ClassCleanup]পদ্ধতি আমি চালানোDispose()
— IAbstract

18
আমি ভাবছি যদি আপনি কনসোলে আউটপুটটি প্রদর্শন করতে পারেন এবং একই সাথে এটি কোনও ফাইলে সংরক্ষণ করতে পারেন।
— জন আলেক্সিয়ো

54

এটি যদি কাজ করে তবে চেষ্টা করুন:

FileStream filestream = new FileStream("out.txt", FileMode.Create);
var streamwriter = new StreamWriter(filestream);
streamwriter.AutoFlush = true;
Console.SetOut(streamwriter);
Console.SetError(streamwriter);

4
দুর্দান্ত উত্তর - এই কনসোল আউটপুটটিকে পুনঃনির্দেশ করুন নোট করুন , যাতে আপনি কেবল লগিং পান। এছাড়াও, আপনি আগের লগগুলি রাখতে ফাইলমোড.অ্যাপেন্ড ব্যবহার করতে পারেন।
— ডানক

4
Console.SetOut(System.IO.TextWriter.Null)আপনি যদি লগ অফ করতে চান।
— চেকসাম

22

প্রশ্নের জন্য:

টেক্সট ফাইলে কনসোল.রেটলাইন আউটপুট কীভাবে সংরক্ষণ করবেন?

Console.SetOutঅন্যরা যেমন উল্লেখ করেছে তেমন আমি ব্যবহার করব ।


তবে এটি দেখতে আরও বেশি মনে হচ্ছে আপনি নিজের প্রোগ্রামের প্রবাহটি ট্র্যাক করে রাখছেন। আমি ব্যবহার Debugবা Traceপ্রোগ্রাম স্থিতি ট্র্যাক রাখার জন্য বিবেচনা করব ।

আপনার ইনপুট যেমন আপনার আরও নিয়ন্ত্রণ না করে এটি কনসোলে অনুরূপ কাজ করে WriteLineIf।

Debug কেবল তখনই কাজ করবে যখন ডিবাগ মোডে থাকবে Trace কাজ হবে উভয়ই ডিবাগ বা রিলিজ মোডে চলবে।

তারা উভয়ই শ্রোতাদের যেমন আউটপুট ফাইল বা কনসোলের জন্য অনুমতি দেয়।

TextWriterTraceListener tr1 = new TextWriterTraceListener(System.Console.Out);
Debug.Listeners.Add(tr1);

TextWriterTraceListener tr2 = new TextWriterTraceListener(System.IO.File.CreateText("Output.txt"));
Debug.Listeners.Add(tr2);

- http://support.microsoft.com/kb/815788


14

আপনি কি তার জন্য কোড লিখতে চান বা কেবল কমান্ড-লাইন বৈশিষ্ট্যটি 'কমান্ড পুনর্নির্দেশ' ব্যবহার করুন:

app.exe >> আউটপুট.টেক্সট

এখানে প্রদর্শিত হিসাবে: http://discomoose.org/2006/05/01/output-redirection-to-a-file-from-the-windows-command-line/ (এ আর্কাইভ করা archive.org )

সম্পাদনা: লিঙ্কটি মৃত, এখানে অন্য একটি উদাহরণ: http://pcsupport.about.com/od/commandlinereferences/a/redirect-command-output-to-file.htm


এই সমাধানটি আমার পক্ষে আরও ভাল কারণ আমি দেখতে পেয়েছি যে টেক্সট রাইটার সমাধানটি ব্যবহার করে আমার আউটপুট কেটে গেছে। আপনি যদি একটি নতুন লিঙ্ক চান তবে কমান্ড পুনঃনির্দেশ অনুসন্ধান করুন eg টেকনেট.মাইক্রোসফট.ইন- ইউএস
— লিবারিয়ান/

উদাহরণস্বরূপ ব্যাট / সেন্টিমিডি ফাইলগুলিতে পুনঃনির্দেশ বৈশিষ্ট্যটি ব্যবহারের ফলে আউটপুটটি
— কোডপেজ

5

একটি শ্রেণি লগার তৈরি করুন (নীচের কোড), কনসোলটি প্রতিস্থাপন করুন riteউইটলাইটের সাথে রাইটলাইন। শেষে একটি ফাইলটিতে স্ট্রিং লগ লিখুন

public static class Logger
{        
     public static StringBuilder LogString = new StringBuilder(); 
     public static void Out(string str)
     {
         Console.WriteLine(str);
         LogString.Append(str).Append(Environment.NewLine);
     }
 }

এই আমি ঠিক খুঁজছিলাম ছিল।
— ঝোলম্যান


2

WhoIsNinja এর উত্তরের ভিত্তিতে:

এই কোডটি উভয় কনসোল এবং লগ স্ট্রিংয়ে আউটপুট দেয় যা কোনও ফাইলের মধ্যে সেভ করা যায় এটির লাইন যুক্ত করে বা ওভাররাইট করে।

লগ ফাইলের ডিফল্ট নাম হ'ল লগ.টেক্সট এবং অ্যাপ্লিকেশন পাথের অধীনে সংরক্ষণ করা হয়।

public static class Logger
{
    public static StringBuilder LogString = new StringBuilder();
    public static void WriteLine(string str)
    {
        Console.WriteLine(str);
        LogString.Append(str).Append(Environment.NewLine);
    }
    public static void Write(string str)
    {
        Console.Write(str);
        LogString.Append(str);

    }
    public static void SaveLog(bool Append = false, string Path = "./Log.txt")
    {
        if (LogString != null && LogString.Length > 0)
        {
            if (Append)
            {
                using (StreamWriter file = System.IO.File.AppendText(Path))
                {
                    file.Write(LogString.ToString());
                    file.Close();
                    file.Dispose();
                }
            }
            else
            {
                using (System.IO.StreamWriter file = new System.IO.StreamWriter(Path))
                {
                    file.Write(LogString.ToString());
                    file.Close();
                    file.Dispose();
                }
            }               
        }
    }
}

তারপরে আপনি এটি ব্যবহার করতে পারেন:

Logger.WriteLine("==========================================================");
Logger.Write("Loading 'AttendPunch'".PadRight(35, '.'));
Logger.WriteLine("OK.");

Logger.SaveLog(true); //<- default 'false', 'true' Append the log to an existing file.

4
যদিও খুব ভালো, আপনি ফর্ম্যাটিং কার্যকারিতা পাতাটা হারান Console.WriteএবংConsole.WriteLine
— কোল জনসন

1

আপনার app.config এ কেবল কনফিগারেশন ব্যবহার করুন:

    <system.diagnostics> 
        <trace autoflush="true" indentsize="4"> 
              <listeners> 

              <add name="consoleListener" type="System.Diagnostics.ConsoleTraceListener"/>

            <!--
            <add name="logListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="TextWriterOutput.log" /> 
            <add name="EventLogListener" type="System.Diagnostics.EventLogTraceListener" initializeData="MyEventLog"/>
             -->

             <!--
              Remove the Default listener to avoid duplicate messages
              being sent to the debugger for display
             -->
             <remove name="Default" />

             </listeners> 
        </trace> 
  </system.diagnostics>

পরীক্ষার জন্য, আপনি প্রোগ্রামটি চালানোর আগে আপনি ডিবাগভিউ ব্যবহার করতে পারেন , তারপরে আমরা সহজেই সমস্ত লগ বার্তা দেখতে পারি।

তথ্যসূত্র:
http://blogs.msdn.com/b/jjameson/archive/2009/06/18/configuring-logging-in-a-console-application.aspx http://www.thejoyofcode.com/from_zero_to_logging_with_system_diagnostics_in_15_minutes.aspx
কনসোলে পুনর্চালনা ট্রেস আউটপুট
ট্রেস ব্যবহার করে একটি ফাইল সমস্যা পুনঃনির্দেশ ডিবাগ আউটপুট শ্রোতা
https://ukadcdiagnostics.codeplex.com/
http://geekswithblogs.net/theunstablemind/archive/2009/09/09/adventures-in-system.diagnostics .aspx


এটি কি ট্রেস.উরাইটলাইন এবং কনসোল.রাইটলাইন দিয়ে কাজ করবে না?
— টোমর ক্যাগান

@TomerCagan হয়তো কনসোলট্রেসলিস্টনার এবং কনসোল.সেটআউট ব্যবহার করছে। তথ্যসূত্র আরও তথ্য।
— কিকিনেট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.