JeringTech / Javascript.NodeJS

Invoke Javascript in NodeJS, from C#
Other
455 stars 43 forks source link

JS Logging #129

Closed zpxp closed 2 years ago

zpxp commented 2 years ago

Is there anyway to pipe the logs from node to the logs in C#, or view the JS stdout?

JeremyTCD commented 2 years ago

Hey yes, this library uses the .NET logging framework. JS output is logged at the information level:

class Program
{
    static async Task Main(string[] _)
    {
        // Configure console logging
        var loggerFactory = LoggerFactory.Create(builder =>
        {
            builder.AddConsole();
            builder.SetMinimumLevel(LogLevel.Information);
        });

        // Create and set services
        var services = new ServiceCollection();
        services.AddNodeJS();
        services.AddSingleton(loggerFactory);
        StaticNodeJSService.SetServices(services);

        // Run
        await StaticNodeJSService.InvokeFromStringAsync(@"module.exports = callback => { 
            console.log('** test **'); 
            callback();
        }");
    }
}

Output:

info: Jering.Javascript.NodeJS.HttpNodeJSService[0]
      Connected to NodeJS through HTTP/1.1. Endpoint: http://127.0.0.1:57460/.
info: Jering.Javascript.NodeJS.HttpNodeJSService[0]
      Connected to NodeJS process: 22072.
info: System.Net.Http.HttpClient.IHttpClientService.LogicalHandler[100]
      Start processing HTTP request POST http://127.0.0.1:57460/
info: System.Net.Http.HttpClient.IHttpClientService.ClientHandler[100]
      Sending HTTP request POST http://127.0.0.1:57460/
info: Jering.Javascript.NodeJS.HttpNodeJSService[0]
      ** test **
info: System.Net.Http.HttpClient.IHttpClientService.ClientHandler[101]
      Received HTTP response headers after 79.0932ms - 200
info: System.Net.Http.HttpClient.IHttpClientService.LogicalHandler[101]
      End processing HTTP request after 90.7641ms - 200

Notes:

zpxp commented 2 years ago

Yep that works.