Skip to content

Analogy-LogViewer/Analogy.LogViewer.gRPC

Repository files navigation

Analogy gRPC Receiver

.NET Core Desktop Issues GitHub closed issues License

gRPC data provider for Analogy Log Viewer

The following modules exists:

Nuget Version Description
Analogy.LogViewer.gRPC Nuget Primary Analogy Log Viewer grRPC providers
Analogy.LogServer Nuget A windows Service for receiving logs
Analogy.LogServer.Clients Nuget gRPC client to pull back messages from Analogy Service
Analogy.AspNetCore.LogProvider Nuget AspNetCore Logger provider
NLog Target Nuget NLog target to stream logs to Analogy
Serilog Sink Nuget Serilog Sink for sending logs to Analogy

With Analogy Log Service you can have multiple executables sending messages to the log service and have Analogy Log Viewer consume those messages: Example

To install Analogy Log Server as windows service use the following command line:

sc create Analogy.LogServer binpath=full path to Analogy.LogServer.exe file

Usage

Once you have setup Analogy Log Server you can start sending messages to it:

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     autoReload="true"
     internalLogLevel="warn">

 <extensions>
   <add assembly="NLog.Web.AspNetCore"/>
   <add assembly="Analogy.LogViewer.NLog.Targets"/>
 </extensions>

 <targets>
   <!-- write logs to file  -->
   <target xsi:type="File" name="allfile"
       fileName="c:\KALPA\logs\${processname:fullName=false}-KX.nlog"
       layout="${longdate}|${uppercase:${level}}|${logger}|${message}${exception:format=tostring}|${processname:fullName=false}|${processid}"
       keepFileOpen="false"
       archiveFileName="c:\KALPA\logs\${processname:fullName=false}-KX-${shortdate}.{##}.nlog"
       archiveNumbering="Sequence"
       archiveEvery="Day"
       maxArchiveFiles="100"
       archiveAboveSize="30000000">
   </target>
   <!-- write logs to Analogy Log Server  -->
   <target xsi:type="NlogAnalogyGRPCTarget" name="NLogToAnalogyGRPCTarget"
           layout="${longdate}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|${processname:fullName=false}|${processid}">
     <contextproperty name="MachineName" layout="${machinename}" />
     <contextproperty name="ThreadId" layout="${threadid}"/>
     <contextproperty name="ProcessId" layout="${processid}" />
     <contextproperty name="callsite" layout="   ${callsite:className=true:fileName=true:includeSourcePath=true:methodName=true}" />
     <contextproperty name="ProcessName" layout="${processname:fullName=false}" />
   </target>
 </targets>

 <rules>
   <logger name="*" minlevel="Trace" writeTo="allfile" />
   <logger name="*" minlevel="Trace" writeTo="NLogToAnalogyGRPCTarget" />
 </rules>
</nlog>
 public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
 {
     loggerFactory.AddAnalogyLogger(new AnalogyLoggerConfiguration
     {
         LogLevel = LogLevel.Trace,
         EventId = 0,
         AnalogyServerUrl = "http://localhost:6000"
      });
     }