Azure NAT Gateway
learn.microsoft.com
DatabricksからBlob Storageにアクセスしていて、Blob Storage側でアクセス制限が必要になったので、Azure NAT Gatewayが使えそう。公式サイトではPaaSへのアクセス制限はPrivate Linkを推奨しているけど、異なるサブスクリプション間のDataBricksからアクセスなので、NAT Gatewayが第一候補かなと考えている。
log4netでApplication Insightsにログを出力する方法
目次
はじめに
忘れないようにメモとして残しておきます。
.Net FrameworkのConsoleアプリを対象としています。
Visual StudionのNugetで必要なライブラリをインストール
log4netをインストール
Application Insightsをインストール
ローカルにApplicationInsights.configが生成されるので、InstrumentationKeyタグを追加する。
またApplicationInsights.configの完全版のため、不要なタグ(設定)は削除すること。
TelemetrySinkはログのサンプリングに関わるので、すべてのログをApplication Insightsに送信する場合は削除する。
docs.microsoft.com
<?xml version="1.0" encoding="utf-8"?> <ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings"> <InstrumentationKey>your instrumentkey</InstrumentationKey> <TelemetryInitializers> <Add Type="Microsoft.ApplicationInsights.DependencyCollector.HttpDependenciesParsingTelemetryInitializer, Microsoft.AI.DependencyCollector"/> <Add Type="Microsoft.ApplicationInsights.WindowsServer.AzureRoleEnvironmentTelemetryInitializer, Microsoft.AI.WindowsServer"/> <Add Type="Microsoft.ApplicationInsights.WindowsServer.AzureWebAppRoleEnvironmentTelemetryInitializer, Microsoft.AI.WindowsServer"/> <Add Type="Microsoft.ApplicationInsights.WindowsServer.BuildInfoConfigComponentVersionTelemetryInitializer, Microsoft.AI.WindowsServer"/> </TelemetryInitializers> <!-- 以下省略 --> </ApplicationInsights>
log4net用のAppenderをインストール
www.nuget.org
app.configに必要な情報が登録される。
<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /> </startup> <log4net> <root> <level value="ALL" /> <appender-ref ref="aiAppender" /> </root> <appender name="aiAppender" type="Microsoft.ApplicationInsights.Log4NetAppender.ApplicationInsightsAppender, Microsoft.ApplicationInsights.Log4NetAppender"> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%message%newline" /> </layout> </appender> </log4net> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-2.0.8.0" newVersion="2.0.8.0" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>
コンソールアプリでログ出力
using log4net; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace ConsoleApp14 { class Program { static void Main(string[] args) { log4net.Config.XmlConfigurator.Configure(); var logger = LogManager.GetLogger(typeof(ConsoleApp14.Program)); for (int i = 1; i <= 100; i++) { logger.Info("test:" + i); } // 最後にFlushメソッドを実行 LogManager.Flush(5000); Console.ReadKey(); } } }
ログ出力結果
Application Insightsにログが出力された。
補足
log4netなので、app.configにappenderを追加すればコンソールやファイルに同じログを出力することが可能
<log4net> <root> <level value="INFO" /> <appender-ref ref="aiAppender" /> <appender-ref ref="RollingLogFileAppender"/> <appender-ref ref="ConsoleAppender"/> </root> <appender name="aiAppender" type="Microsoft.ApplicationInsights.Log4NetAppender.ApplicationInsightsAppender, Microsoft.ApplicationInsights.Log4NetAppender"> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger] - %message%newline" /> </layout> </appender> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger] - %message%newline" /> </layout> </appender> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <file value = "C:\Work\MyLog.log" /> <appendToFile value = "true" /> <rollingStyle value = "Size" /> <maxSizeRollBackups value = "100" /> <maximumFileSize value = "10MB" /> <staticLogFileName value = "true" /> <!-- 複数プロセスから書き込みOK --> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger] - %message%newline" /> </layout> </appender> </log4net>
Windows Server 2019 共有フォルダのためのFirewall設定
備忘録
Inboundで次のルール(許可)を有効化する。
別サーバーの共有フォルダにアクセス可能になった。