33using Akka . Actor . Dsl ;
44using Akka . Cluster . Hosting ;
55using Akka . Event ;
6- using Akka . Hosting . Logging ;
76using Akka . Hosting . LoggingDemo ;
8- using Akka . Logger . Serilog ;
97using Akka . Remote . Hosting ;
10- using Serilog ;
8+ using Microsoft . Extensions . DependencyInjection ;
9+ using Microsoft . Extensions . Hosting ;
1110using LogLevel = Akka . Event . LogLevel ;
1211
13- Serilog . Log . Logger = new LoggerConfiguration ( )
14- . WriteTo . Console ( )
15- . MinimumLevel . Debug ( )
16- . CreateLogger ( ) ;
12+ var builder = Host . CreateDefaultBuilder ( args ) ;
1713
18- var builder = WebApplication . CreateBuilder ( args ) ;
19-
20- builder . Services . AddAkka ( "MyActorSystem" , ( configurationBuilder , serviceProvider ) =>
21- {
22- configurationBuilder
23- . ConfigureLoggers ( setup =>
24- {
25- // Example: This sets the minimum log level
26- setup . LogLevel = LogLevel . DebugLevel ;
27-
28- // Example: Clear all loggers
29- setup . ClearLoggers ( ) ;
30-
31- // Example: Add the default logger
32- // NOTE: You can also use setup.AddLogger<DefaultLogger>();
33- setup . AddDefaultLogger ( ) ;
34-
35- // Example: Add the ILoggerFactory logger
36- // NOTE:
37- // - You can also use setup.AddLogger<LoggerFactoryLogger>();
38- // - To use a specific ILoggerFactory instance, you can use setup.AddLoggerFactory(myILoggerFactory);
39- setup . AddLoggerFactory ( ) ;
40-
41- // Example: Adding a serilog logger
42- //setup.AddLogger<SerilogLogger>(); // TODO: add back once upgraded to v1.5 APIs
43- } )
44- . WithRemoting ( "localhost" , 8110 )
45- . WithClustering ( new ClusterOptions ( ) { Roles = new [ ] { "myRole" } ,
46- SeedNodes = new [ ] { "akka.tcp://MyActorSystem@localhost:8110" } } )
47- . WithActors ( ( system , registry ) =>
48- {
49- var echo = system . ActorOf ( act =>
14+ await builder
15+ . ConfigureServices ( services =>
16+ {
17+ services
18+ . AddSingleton < WorkerService > ( )
19+ . AddHostedService < WorkerService > ( )
20+ . AddAkka ( "MyActorSystem" , ( configurationBuilder , serviceProvider ) =>
5021 {
51- act . ReceiveAny ( ( o , context ) =>
52- {
53- Logging . GetLogger ( context . System , "echo" ) . Info ( $ "Actor received { o } ") ;
54- context . Sender . Tell ( $ "{ context . Self } rcv { o } ") ;
55- } ) ;
56- } , "echo" ) ;
57- registry . TryRegister < Echo > ( echo ) ; // register for DI
58- } ) ;
59- } ) ;
60-
61- var app = builder . Build ( ) ;
62-
63- app . MapGet ( "/" , async ( context ) =>
64- {
65- var echo = context . RequestServices . GetRequiredService < ActorRegistry > ( ) . Get < Echo > ( ) ;
66- var body = await echo . Ask < string > ( context . TraceIdentifier , context . RequestAborted ) . ConfigureAwait ( false ) ;
67- await context . Response . WriteAsync ( body ) ;
68- } ) ;
69-
70- app . Run ( ) ;
22+ configurationBuilder
23+ . ConfigureLoggers ( setup =>
24+ {
25+ // This sets the minimum log level
26+ setup . LogLevel = LogLevel . DebugLevel ;
27+
28+ // Clear all loggers (remove the default console logger)
29+ setup . ClearLoggers ( ) ;
30+
31+ // Add the ILoggerFactory logger
32+ // NOTE:
33+ // - You can also use setup.AddLogger<LoggerFactoryLogger>();
34+ // - To use a specific ILoggerFactory instance, you can use setup.AddLoggerFactory(myILoggerFactory);
35+ setup . AddLoggerFactory ( ) ;
36+ } )
37+ . WithRemoting ( "localhost" , 8110 )
38+ . WithClustering ( new ClusterOptions {
39+ Roles = [ "myRole" ] ,
40+ SeedNodes = [ "akka.tcp://MyActorSystem@localhost:8110" ]
41+ } )
42+ . WithActors ( ( system , registry ) =>
43+ {
44+ var echo = system . ActorOf ( act =>
45+ {
46+ act . ReceiveAny ( ( o , context ) =>
47+ {
48+ Logging . GetLogger ( context . System , "echo" ) . Info ( $ "Actor received { o } ") ;
49+ context . Sender . Tell ( $ "{ context . Self } rcv { o } ") ;
50+ } ) ;
51+ } , "echo" ) ;
52+ registry . TryRegister < Echo > ( echo ) ; // register for DI
53+ } ) ;
54+ } ) ;
55+ } )
56+ . UseConsoleLifetime ( )
57+ . RunConsoleAsync ( ) ;
0 commit comments