internal FunctionInvokerBase(ScriptHost host, FunctionMetadata functionMetadata, ITraceWriterFactory traceWriterFactory = null) { Host = host; Metadata = functionMetadata; _metrics = host.ScriptConfig.HostConfig.GetService <IMetricsLogger>(); // Function file logging is only done conditionally traceWriterFactory = traceWriterFactory ?? new FunctionTraceWriterFactory(functionMetadata.Name, Host.ScriptConfig); TraceWriter traceWriter = traceWriterFactory.Create(); FileTraceWriter = traceWriter.Conditional(t => Host.FileLoggingEnabled && (!(t.Properties?.ContainsKey(ScriptConstants.TracePropertyPrimaryHostKey) ?? false) || Host.IsPrimary)); // The global trace writer used by the invoker will write all traces to both // the host trace writer as well as our file trace writer TraceWriter = host.TraceWriter != null ? new CompositeTraceWriter(new TraceWriter[] { FileTraceWriter, host.TraceWriter }) : FileTraceWriter; // Apply the function name as an event property to all traces var functionTraceProperties = new Dictionary <string, object> { { ScriptConstants.TracePropertyFunctionNameKey, Metadata.Name } }; TraceWriter = TraceWriter.Apply(functionTraceProperties); }
internal FunctionInvokerBase(ScriptHost host, FunctionMetadata functionMetadata, ITraceWriterFactory traceWriterFactory = null) { Host = host; Metadata = functionMetadata; _metrics = host.ScriptConfig.HostConfig.GetService<IMetricsLogger>(); // Function file logging is only done conditionally traceWriterFactory = traceWriterFactory ?? new FunctionTraceWriterFactory(functionMetadata.Name, Host.ScriptConfig); TraceWriter traceWriter = traceWriterFactory.Create(); FileTraceWriter = traceWriter.Conditional(t => Host.FileLoggingEnabled && (!(t.Properties?.ContainsKey(ScriptConstants.TracePropertyPrimaryHostKey) ?? false) || Host.IsPrimary)); // The global trace writer used by the invoker will write all traces to both // the host trace writer as well as our file trace writer TraceWriter = host.TraceWriter != null ? new CompositeTraceWriter(new TraceWriter[] { FileTraceWriter, host.TraceWriter }) : FileTraceWriter; // Apply the function name as an event property to all traces var functionTraceProperties = new Dictionary<string, object> { { ScriptConstants.TracePropertyFunctionNameKey, Metadata.Name } }; TraceWriter = TraceWriter.Apply(functionTraceProperties); }