Dotnet FrameworkでSystem.Diagnostics.ConsoleTraceListenerを使う

Console Applicationを作成する。

App.configは以下の通り。

<configuration >
	<startup> 
		<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
	</startup>
	<system.diagnostics>
		<sources>
			<source name="TraceTest" switchName="sourceSwitch" switchType="System.Diagnostics.SourceSwitch">
				<listeners>
					<add name="Console"/>
					<add name="myListener"/>
					<remove name="Default"/>
				</listeners>
			</source>
		</sources>
		<switches>
			<!--<add name="sourceSwitch" value="Warning"/>-->
			<!--<add name="sourceSwitch" value="Information"/>-->
			<add name="sourceSwitch" value="Verbose"/>
		</switches>
		<sharedListeners>
			<add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="F:\temp\logs\Text.log">
				<filter type="System.Diagnostics.EventTypeFilter" initializeData="Verbose"/>
			</add>
			<add name="Console" type="System.Diagnostics.ConsoleTraceListener" initializeData="true" />
		</sharedListeners>
    </system.diagnostics>
<configuration />

Program.csは、以下の通り。
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        private readonly static TraceSource mySource = new TraceSource("TraceTest", SourceLevels.All);

        static void Main(string[] args)
        {
            
            Trace.TraceInformation("=== Use Trace Console Message ==");
            Trace.Flush();

            mySource.TraceEvent(TraceEventType.Information, 0, "== START TraceEvent ==");
            // Issue an error and a warning message. Only the error message
            // should be logged.
            Activity1();

            // Issue a warning and a critical message. Both should be logged.
            Activity2();

            // Restore the original filter settings.
            Activity3();
            mySource.Close();
            return;
        }

        static void Activity1()
        {
            mySource.TraceEvent(TraceEventType.Error, 1, "Error message.");
            mySource.TraceEvent(TraceEventType.Warning, 2, "Warning message.");
            mySource.TraceInformation("Information Message!!!!");
        }
        static void Activity2()
        {
            mySource.TraceEvent(TraceEventType.Critical, 3,"Critical message.");
            mySource.TraceEvent(TraceEventType.Warning, 2,"Warning message.");
        }
        static void Activity3()
        {
            mySource.TraceEvent(TraceEventType.Error, 4,"Error message.");
            mySource.TraceInformation("Informational message.");
        }
    }
}

参考

コメント

このブログの人気の投稿

ソリューション構成ごとにconfigファイルを作成する

C++の古いプロジェクトのビルドでerror MIDL2311 : statements outside library block are illegal in mktyplib compatability mode

web.config debug/releaseの内容を変換構文を使って切り替える