Cake.Bakery logging is not turned on when it gets launched by OmniSharp.
Cake.Scripting.Transport.Tcp.Client.ScriptGenerationProcess will never pass --verbose argument to Cake.Bakery.exe.
Reason:
Cake.Scripting.Transport uses LoggerFactory which is passed to it by OmniSharp.
- Bakery
ScriptGenerationProcess expects following condition to be met in order to enable verbose logging:
if (_logger.IsEnabled(LogLevel.Debug))
{
arguments += " --verbose";
}
- OmniSharp has logging filter which will never enable any logging from non OmniSharp namespaces as follows (CompositionHostBuilder.cs):
services.AddLogging(builder =>
{
var workspaceInformationServiceName = typeof(WorkspaceInformationService).FullName;
var projectEventForwarder = typeof(ProjectEventForwarder).FullName;
builder.AddFilter(
(category, logLevel) =>
environment.LogLevel <= logLevel &&
// NOTICE BELOW LINE. Condition from point #1 of this bug report will always return false. Category is Cake.Scripting.Transport.Tcp.Client.ScriptGenerationProcess
category.StartsWith("OmniSharp", StringComparison.OrdinalIgnoreCase) &&
!category.Equals(workspaceInformationServiceName, StringComparison.OrdinalIgnoreCase) &&
!category.Equals(projectEventForwarder, StringComparison.OrdinalIgnoreCase));
configureLogging?.Invoke(builder);
});
This could be considered a bug either in OmniSharp (due to log filter) or Cake.Bakery ScriptGenerationProcess.
Some options are:
- Allow external configuration of logging, beside command line
- For assembles which are hosted in OmniSharp process, rename namespaces to start with OmniSharp
Cake.Bakery logging is not turned on when it gets launched by OmniSharp.
Cake.Scripting.Transport.Tcp.Client.ScriptGenerationProcesswill never pass--verboseargument to Cake.Bakery.exe.Reason:
Cake.Scripting.TransportusesLoggerFactorywhich is passed to it by OmniSharp.ScriptGenerationProcessexpects following condition to be met in order to enable verbose logging:This could be considered a bug either in OmniSharp (due to log filter) or Cake.Bakery ScriptGenerationProcess.
Some options are: