Skip to content

Commit df0df10

Browse files
committed
Use manual nlog init for fast start-up
1 parent e58bac7 commit df0df10

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

core/IncrementalCompiler/Program.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
using NLog.Config;
99
using NLog.Targets;
1010
using System.ServiceModel;
11+
using NLog.LayoutRenderers;
12+
using NLog.LayoutRenderers.Wrappers;
1113

1214
namespace IncrementalCompiler
1315
{
@@ -186,6 +188,7 @@ static int RunAsServer(string[] args)
186188

187189
static void SetupLogger(string fileName, bool useConsole)
188190
{
191+
InitNLogConfigurationItemFactory();
189192
var config = new LoggingConfiguration();
190193

191194
if (useConsole)
@@ -209,5 +212,23 @@ static void SetupLogger(string fileName, bool useConsole)
209212

210213
LogManager.Configuration = config;
211214
}
215+
216+
static void InitNLogConfigurationItemFactory()
217+
{
218+
// Default initialization code for ConfigurationItemFactory.Default spends
219+
// almost 0.5 sec in il-packed executable. (it scans whole types in assembly to find plugin types)
220+
// To avoid this slow-down, manual initialization is written.
221+
// If you need another layout-renderer, filter or anything else in NLog assembly,
222+
// please insert register code here.
223+
224+
var factory = new ConfigurationItemFactory(new Assembly[0]);
225+
factory.LayoutRenderers.RegisterDefinition("longdate", typeof(LongDateLayoutRenderer));
226+
factory.LayoutRenderers.RegisterDefinition("level", typeof(LevelLayoutRenderer));
227+
factory.LayoutRenderers.RegisterDefinition("logger", typeof(LoggerNameLayoutRenderer));
228+
factory.LayoutRenderers.RegisterDefinition("message", typeof(MessageLayoutRenderer));
229+
factory.LayoutRenderers.RegisterDefinition("exception", typeof(ExceptionLayoutRenderer));
230+
factory.LayoutRenderers.RegisterDefinition("uppercase", typeof(UppercaseLayoutRendererWrapper));
231+
ConfigurationItemFactory.Default = factory;
232+
}
212233
}
213234
}

0 commit comments

Comments
 (0)