.NET Core建立一個控制檯(Console)程式

FrankYou發表於2016-06-15

.NET Core版本:1.0.0-rc2

Visual Studio版本:Microsoft Visual Studio Community 2015 Update 2

開發及執行平臺:Windows 7 專業版 Service Pack 1

  • 新增一個控制檯專案(ConsoleLogApp)

  • 在project.json檔案中新增依賴項

{
  "version": "1.0.0-*",
  "buildOptions": {
    "emitEntryPoint": true
  },

  "dependencies": {
    "Microsoft.NETCore.App": {
      "type": "platform",
      "version": "1.0.0-rc2-3002702"
    },
    "Microsoft.Extensions.DependencyInjection": "1.0.0-rc2-final",
    "Microsoft.Extensions.Logging": "1.0.0-rc2-final",
    "Microsoft.Extensions.Logging.Console": "1.0.0-rc2-final",
    "Microsoft.Extensions.Configuration.Json": "1.0.0-rc2-final",
    "System.Text.Encoding": "4.0.11-rc2-24027",
    "System.Text.Encoding.CodePages": "4.0.1-rc2-24027"
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": "dnxcore50"
    }
  }
}
  • 新增日誌輸出配置檔案(log.json)

我們這個控制檯程式主要目的是用來列印輸出日誌,所以這裡用一個單獨的日誌配置檔案來儲存相關日誌相關選項,比如:是否包括上下文,日誌輸出最低等級等。

{
  "IncludeScopes": false,
  "LogLevel": {
    "App": "Warning"
  }
}

IncludeScopes為false讓控制檯日誌輸出時不包含上下文;LogLevel的最低等級設定為:Warning,只有高於這個級別的日誌才會輸出。App為日誌的CategoryName。

  • 入口程式

using System;
using Microsoft.Extensions.Configuration;
using System.Text;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;

namespace ConsoleLogApp
{
    public class Program
    {
        public static void Main(string[] args)
        {
            // 支援中文編碼
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

            // 載入日誌配置檔案
            var setttins = new ConfigurationBuilder().AddJsonFile("log.json").Build();

            // 建立ConsoleLogProvider並根據日誌類目名稱(CategoryName)生成Logger例項
            var logger = new ServiceCollection().AddLogging().BuildServiceProvider().GetService<ILoggerFactory>().AddConsole(setttins).CreateLogger("App");

            // 設定事件ID
            const int eventId = 888888;

            // 輸出正常提示日誌
            logger.LogInformation(eventId, "訂單號({OderNo})", "12345678000");

            // 輸出警示日誌
            logger.LogWarning(eventId, "待處理訂單數達到5分鐘內的預警值:{max}", 2000);

            // 輸出錯誤日誌
            logger.LogError(eventId, "資料庫連線超時");

            Console.ReadLine();
        }
    }
}
  • 使用“dotnet restore”來還原依賴項

    • 在Git Bash中把當前目錄切換到專案的根目錄下(本例為:D:\ConsoleLogApp)
    • dotnet restore命令是用來尋找當前目錄下的專案檔案(project.json),然後利用NuGet庫還原整個專案的依賴庫,然後遍歷每個目錄生成專案檔案,繼續還原該專案檔案中依賴項。

 

 

  • 使用“dotnet build”來編譯整個專案

編譯成功後,我們在專案根目錄下的bin目錄中發現編譯後的資料夾(D:\ConsoleLogApp\bin\Debug\netcoreapp1.0),命令執行成功後生成了一個Debug目錄並在此目錄下生成了一個以應用名稱命名的資料夾(netcoreapp1.0,這個名稱是在project.json中配置的)

  • 使用“dotnet run”來執行程式

 我們可以看到info級別的輸出日誌被過濾掉了,只有Warning以上的日誌被輸出了。

 

 

相關文章