投稿

ラベル(dotnet)が付いた投稿を表示しています

Dotnet Core2.2 でSerilogを使う

■ .net core2.1 は、Microsoft.Extensions.Loggingの AddFile が使えた。 public void ConfigureServices(IServiceCollection services) { services.AddLogging(lb => { lb.AddConfiguration(Configuration.GetSection("Logging")); lb.AddFile(o => o.RootPath = AppContext.BaseDirectory); }); } ■ .net Core2.2 は、まだ実装されていないので、サードパーティのプラグインを利用する必要があるようだ。 なので「Seri l og」を利用する。 必要なモジュール Serilog. AspNetCore(dotnet core 用 ) Serilog.Sinks.Trace( Console Window への出力) Serilog.Sinks.File(File 出力 ) Serilog. Sinks.Console(Console 出力 ) Serilog.Sinks.RollingFile( ファイル出力を日付単位等分割する ) Serilog.Settings.Configuration(appsettings.json 用 ) appsettings.json { "Serilog": { "Using": [ "Serilog.Sinks.Console" ], "MinimumLevel": "Debug", "Enrich": [ "FromLogContext", "WithMachineName", "WithProcessId", "WithThreadId" ], "WriteTo": [ { ...

dotnet coreでLoggingする

dotnet coreのログ取得方法を勉強する。 やり方は以下の通りとする。 プロジェクトは 前回 のをそのまま流用する appsettings.jsonにログ設定を記載する controllerで出力させる。 1. appsettings.jsonの修正 デフォルトは「すべてのプロバイダー用」である"LogLevel"で設定すればよいのだが、namespace個別にログレベルを設定する場合は「Debugプロバイダー用」を使う。 { "TestUpdateData": { "EndPointUrl": "http://localhost:8080", "AuthorizationKey": "12345678" }, // Debug プロバイダー用 "Logging": { "LogLevel": { "Default": "Debug", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information", "WebApplication4.Controllers": "Debug" } }, // Console プロバイダー用 "Console": { "IncludeScopes": false, "LogLevel": { "Microsoft.AspNetCore.Mvc.Razor.Internal": "Warning", "Microsoft.AspNetCore.Mvc.Razor.Razor": "Debug", "Microsoft.AspNetCor...

Dotnet Core Webアプリを使ってDIを勉強する

イメージ
Dotnet Core WebアプリでDI(Dependency Injection)を勉強する。 今回は、以下をターゲットとする。 appsettings.jsonを使ったDI Controllerで利用 作成、修正するファイル appsettings.json Models/AppSettings.cs(新規作成) Startup.cs Controllers/HomeControllers 0. Dotnet Core Webアプリプロジェクトを作成する VisualStudioのファイル→新規作成→プロジェクト →ASP.NET Core Webアプリケーションを選択。 次に、Webアプリケーション(モデルビューコントローラー)を選択。 これでプロジェクトが作成される。 このプロジェクトに以下の修正を加える。 1. appsettings.json DIしたいデータを作成する。appsettings.jsonのデータを次のAppSettingsへInjectionする。 { "TestUpdateData": { "EndPointUrl": "http://localhost:8080", "AuthorizationKey": "12345678" }, "AllowedHosts": "*" } 2. Models/AppSettings.cs(新規作成) 上記で作成したjsonデータをここにInjectionする。 using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace WebApplication4.Models { public class AppSettings { public TestDB TestUpdateData { get; set; } } public class TestDB { public string EndP...

Supervisorをインストールしてdotnetを動かす

■ 環境 Ubuntu20.04(vagrant+virtualBox) dotnet version3.1 すでに nginxでhttpsリバースプロキシを構築し.Net Coreアプリを動かす でnginxでリバースプロキシが構築されていること。 There’s an tool called Supervisor that is good at that so I’ll add it. WebサーバーSupervisorをインストール $ sudo apt-get install supervisor DotnetアプリをRelease Buildする $ sudo mkdir -p /var/aspnetcore $ cd ~/hellomvc $ sudo dotnet publish --configuration Release Microsoft (R) Build Engine version 16.6.0+5ff7b0c9e for .NET Core Copyright (C) Microsoft Corporation. All rights reserved. Determining projects to restore... Restored /home/vagrant/data/hellomvc/hellomvc.csproj (in 2.47 sec). hellomvc -> /home/vagrant/data/hellomvc/bin/Release/netcoreapp3.1/hellomvc.dll hellomvc -> /home/vagrant/data/hellomvc/bin/Release/netcoreapp3.1/publish/ アプリケーションの公開ディレクトリへコピーする $ sudo cp -R ./bin/Release/netcoreapp3.1/publish/* /var/aspnetcore/ $ ls /var/aspnetcore/ appsettings.Development.json appsettings.json hellomvc hellomvc.deps.json hellomvc.dll hellomvc.pdb hel...

nginxでhttpsリバースプロキシを構築し.Net Coreアプリを動かす

■ 前提条件 $dotnet run で http://localhost:5000にアクセスするとdotnetアプリが動作すること。 前回のブログ nginxでリバースプロキシさせてDotnet Coreを動かす で一通りリバースプロキシが構築できていること。 ■ nginxの設定 ngingxのconfigファイルを以下の通り作成する。 httpsでアクセスが来たら、localhost:5000にリバースプロキシする。 ./nginx.conf $ cat nginx.conf user www-data; worker_processes auto; pid /run/nginx.pid; include /etc/nginx/modules-enabled/*.conf; events { worker_connections 768; # multi_accept on; } http { include /etc/nginx/proxy_params; ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65;  server_names_hash_bucket_size 128; types_hash_max_size 2048; server_tokens off; include /etc/nginx/mime.types; default_type application/octet-stream; ## # Logging Settings ## access_log /etc/nginx/logs/access.log; error_log /etc/nginx/logs/error.log; upstream helloapp{ server 127.0.0.1:5000; } server { listen 80; server_name localhost; index index.html; root /var/www/...

nginxでリバースプロキシさせてDotnet Coreを動かす

■ 前提条件 $dotnet run で http://localhost:5000にアクセスするとdotnetアプリが動作すること。 nginxを使ってリバースプロキシを構築する。 ■ nginxの設定 ngingxのconfigファイルを以下の通り作成する。 ポート8081でアクセスが来たら、localhost:5000にリバースプロキシする。 $ vim /etc/nginx/conf.d/app01.conf server { listen 8081; server_name localhost 127.0.0.1; charset utf-8; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location / { proxy_pass http://localhost:5000 ; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } } configファイルの検証 $ sudo nginx -t 問題なければ、configのリロードで反映。 $ sudo nginx -s reload $ sudo service nginx stop $ sudo service nginx start でもよい。 $ dotnet run host端末から http://192.168.33.10::8081 でアクセスしてみよう。 つながったはず。 参考: nginxでASP.NET Coreをホストする (wiki) Supervisor: A Process Control System Centos 7 .Net...

VS Code+.Netでアプリを作る(No.11):MariaDBに接続するコンソールアプリ作成時にusing method 'mysql_native_password' failedで失敗

これ を参考にコンソールアプリでMySQLへ接続する。 一通り、mysqlへの接続環境は整えておく。 外部接続を許可する。 cat > /etc/mysql/conf.d/mysql.cnf << EOF [mysqld] bind-address = 0.0.0.0 ignore-db-dir = lost+found EOF ユーザー作成と、ユーザーからの内部、外部接続を許可しておく。 $ sudo mysql -u root -e 'CREATE DATABASE IF NOT EXISTS `homestead` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_bin;' $ sudo mysql -u root -e "CREATE USER IF NOT EXISTS devadmin@'localhost' IDENTIFIED BY 'Papy-1326';" $ sudo mysql -u root -e "CREATE USER IF NOT EXISTS devadmin@'192.168.%' IDENTIFIED BY 'Papy-1326';" $ sudo mysql -u root -e "GRANT ALL PRIVILEGES ON homestead.* TO devadmin@'localhost';" $ sudo mysql -u root -e "GRANT ALL PRIVILEGES ON homestead.* TO devadmin@'192.168.%';" $ sudo mysql -u root -e "GRANT ALL PRIVILEGES ON mysql.* TO devadmin@'192.168.%';" プロジェクトを生成し、MySQLのパッケージをインストールする。 $ dotnet new console –o mysqlefcore $ cd mysqlefcore $ d...