88using NLog . Config ;
99using NLog . Targets ;
1010using System . ServiceModel ;
11+ using NLog . LayoutRenderers ;
12+ using NLog . LayoutRenderers . Wrappers ;
1113
1214namespace 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