1- [](https://sonarcloud.io/dashboard?id=nanoframework_nanoFramework.nanoFramework.Logging) [](https://sonarcloud.io/dashboard?id=nanoframework_nanoFramework.nanoFramework.Logging) [](LICENSE) [](https://www.nuget.org/packages/nanoFramework.nanoFramework.Logging/) [](https://github.com/nanoframework/Home/blob/master/CONTRIBUTING.md) [](https://discord.gg/gCyBu8T)
1+ [ ![ Quality Gate Status] ( https://sonarcloud.io/api/project_badges/measure?project=nanoframework_nanoFramework.Logging&metric=alert_status )] ( https://sonarcloud.io/dashboard?id=nanoframework_nanoFramework.Logging )  [ ![ Reliability Rating] ( https://sonarcloud.io/api/project_badges/measure?project=nanoframework_nanoFramework.Logging&metric=reliability_rating )] ( https://sonarcloud.io/dashboard?id=nanoframework_nanoFramework.Logging )  [ ![ License] ( https://img.shields.io/badge/License-MIT-blue.svg )] ( LICENSE )  [ ![ NuGet] ( https://img.shields.io/nuget/dt/nanoFramework.Logging.svg?label=NuGet&style=flat&logo=nuget )] ( https://www.nuget.org/packages/nanoFramework.Logging/ )  [ ![ #yourfirstpr] ( https://img.shields.io/badge/first--timers--only-friendly-blue.svg )] ( https://github.com/nanoframework/Home/blob/main/CONTRIBUTING.md )  [ ![ Discord] ( https://img.shields.io/discord/478725473862549535.svg?logo=discord&logoColor=white&label=Discord&color=7289DA )] ( https://discord.gg/gCyBu8T ) 
22
3- ![ nanoFramework logo] ( https://github. com/nanoframework/Home/blob/master /resources/logo/nanoFramework-repo-logo.png ) 
3+ ![ nanoFramework logo] ( https://raw.githubusercontent. com/nanoframework/Home/main /resources/logo/nanoFramework-repo-logo.png ) 
44
55----- 
66
7- ### Welcome to the ** nanoFramework**  nanoFramework.Logging Library repository!   
7+ ### Welcome to the .NET  ** nanoFramework**  nanoFramework.Logging Library repository  
88
99## Build status  
1010
1111|  Component |  Build Status |  NuGet Package | 
1212| :-| ---| ---| 
13- |  nanoFramework.Logging |  [ ![ Build Status] ( https://dev.azure.com/nanoframework/nanoFramework.nanoFramework. Logging/_apis/build/status/nanoframework.nanoFramework.nanoFramework. Logging?branchName=master  )] ( https://dev.azure.com/nanoframework/nanoFramework.nanoFramework. Logging/_build/latest?definitionId=12? branchName=master  )  |  [ ![ NuGet] ( https://img.shields.io/nuget/v/nanoFramework.nanoFramework. Logging.svg?label=NuGet&style=flat&logo=nuget )] ( https://www.nuget.org/packages/nanoFramework. nanoFramework.Logging/ )  | 
14- |  nanoFramework.Logging (preview) |  [ ![ Build Status] ( https://dev.azure.com/nanoframework/nanoFramework.nanoFramework. Logging/_apis/build/status/nanoframework.nanoFramework.nanoFramework. Logging?branchName=develop )] ( https://dev.azure.com/nanoframework/nanoFramework.nanoFramework. Logging/_build/latest?definitionId=12? branchName=develop )  |  [ ![ ] ( https://badgen.net/badge/NuGet/preview/D7B023?icon=https://simpleicons.now.sh/azuredevops/fff  )] ( https://dev.azure.com/nanoframework/feed/_packaging?_a=package&feed=sandbox&package= nanoFramework.nanoFramework. Logging&protocolType=NuGet&view=overview  )  | 
15- |  nanoFramework.Logging.Serial |  [ ![ Build Status] ( https://dev.azure.com/nanoframework/nanoFramework.nanoFramework. Logging/_apis/build/status/nanoframework.nanoFramework.nanoFramework. Logging?branchName=master  )] ( https://dev.azure.com/nanoframework/nanoFramework.nanoFramework. Logging/_build/latest?definitionId=12? branchName=master  )  |  [ ![ NuGet] ( https://img.shields.io/nuget/v/nanoFramework.nanoFramework. Logging.Serial.svg?label=NuGet&style=flat&logo=nuget )] ( https://www.nuget.org/packages/nanoFramework. nanoFramework.Logging.Serial/ )  | 
16- |  nanoFramework.Logging.Serial (preview) |  [ ![ Build Status] ( https://dev.azure.com/nanoframework/nanoFramework.nanoFramework. Logging/_apis/build/status/nanoframework.nanoFramework.nanoFramework. Logging?branchName=develop )] ( https://dev.azure.com/nanoframework/nanoFramework.nanoFramework. Logging/_build/latest?definitionId=12? branchName=develop )  |  [ ![ ] ( https://badgen.net/badge/NuGet/preview/D7B023?icon=https://simpleicons.now.sh/azuredevops/fff  )] ( https://dev.azure.com/nanoframework/feed/_packaging?_a=package&feed=sandbox&package= nanoFramework.nanoFramework. Logging.Serial&protocolType=NuGet&view=overview  )  | 
17- |  nanoFramework.Logging.Stream |  [ ![ Build Status] ( https://dev.azure.com/nanoframework/nanoFramework.nanoFramework. Logging/_apis/build/status/nanoframework.nanoFramework.nanoFramework. Logging?branchName=master  )] ( https://dev.azure.com/nanoframework/nanoFramework.nanoFramework. Logging/_build/latest?definitionId=12? branchName=master  )  |  [ ![ NuGet] ( https://img.shields.io/nuget/v/nanoFramework.nanoFramework. Logging.Stream.svg?label=NuGet&style=flat&logo=nuget )] ( https://www.nuget.org/packages/nanoFramework. nanoFramework.Logging.Stream/ )  | 
18- |  nanoFramework.Logging.Stream (preview) |  [ ![ Build Status] ( https://dev.azure.com/nanoframework/nanoFramework.nanoFramework. Logging/_apis/build/status/nanoframework.nanoFramework.nanoFramework. Logging?branchName=develop )] ( https://dev.azure.com/nanoframework/nanoFramework.nanoFramework. Logging/_build/latest?definitionId=12? branchName=develop )  |  [ ![ ] ( https://badgen.net/badge/NuGet/preview/D7B023?icon=https://simpleicons.now.sh/azuredevops/fff  )] ( https://dev.azure.com/nanoframework/feed/_packaging?_a=package&feed=sandbox&package= nanoFramework.nanoFramework. Logging.Stream&protocolType=NuGet&view=overview  )  | 
13+ |  nanoFramework.Logging |  [ ![ Build Status] ( https://dev.azure.com/nanoframework/nanoframework. Logging/_apis/build/status/nanoframework.nanoFramework.Logging?branchName=main  )] ( https://dev.azure.com/nanoframework/nanoframework. Logging/_build/latest?definitionId=71& branchName=main  )  |  [ ![ NuGet] ( https://img.shields.io/nuget/v/nanoFramework.Logging.svg?label=NuGet&style=flat&logo=nuget )] ( https://www.nuget.org/packages/nanoFramework.Logging/ )  | 
14+ |  nanoFramework.Logging (preview) |  [ ![ Build Status] ( https://dev.azure.com/nanoframework/nanoframework. Logging/_apis/build/status/nanoframework.nanoFramework.Logging?branchName=develop )] ( https://dev.azure.com/nanoframework/nanoframework. Logging/_build/latest?definitionId=71& branchName=develop )  |  [ ![ NuGet ] ( https://img.shields.io/nuget/vpre/nanoFramework.Logging.svg?label=NuGet&style=flat&logo=nuget  )] ( https://www.nuget.org/packages/ nanoFramework.Logging/  )  | 
15+ |  nanoFramework.Logging.Serial |  [ ![ Build Status] ( https://dev.azure.com/nanoframework/nanoframework. Logging/_apis/build/status/nanoframework.nanoFramework.Logging?branchName=main  )] ( https://dev.azure.com/nanoframework/nanoframework. Logging/_build/latest?definitionId=71& branchName=main  )  |  [ ![ NuGet] ( https://img.shields.io/nuget/v/nanoFramework.Logging.Serial.svg?label=NuGet&style=flat&logo=nuget )] ( https://www.nuget.org/packages/nanoFramework.Logging.Serial/ )  | 
16+ |  nanoFramework.Logging.Serial (preview) |  [ ![ Build Status] ( https://dev.azure.com/nanoframework/nanoframework. Logging/_apis/build/status/nanoframework.nanoFramework.Logging?branchName=develop )] ( https://dev.azure.com/nanoframework/nanoframework. Logging/_build/latest?definitionId=71& branchName=develop )  |  [ ![ NuGet ] ( https://img.shields.io/nuget/vpre/nanoFramework.Logging.Serial.svg?label=NuGet&style=flat&logo=nuget  )] ( https://www.nuget.org/packages/ nanoFramework.Logging.Serial/  )  | 
17+ |  nanoFramework.Logging.Stream |  [ ![ Build Status] ( https://dev.azure.com/nanoframework/nanoframework. Logging/_apis/build/status/nanoframework.nanoFramework.Logging?branchName=main  )] ( https://dev.azure.com/nanoframework/nanoframework. Logging/_build/latest?definitionId=71& branchName=main  )  |  [ ![ NuGet] ( https://img.shields.io/nuget/v/nanoFramework.Logging.Stream.svg?label=NuGet&style=flat&logo=nuget )] ( https://www.nuget.org/packages/nanoFramework.Logging.Stream/ )  | 
18+ |  nanoFramework.Logging.Stream (preview) |  [ ![ Build Status] ( https://dev.azure.com/nanoframework/nanoframework. Logging/_apis/build/status/nanoframework.nanoFramework.Logging?branchName=develop )] ( https://dev.azure.com/nanoframework/nanoframework. Logging/_build/latest?definitionId=71& branchName=develop )  |  [ ![ NuGet ] ( https://img.shields.io/nuget/vpre/nanoFramework.Logging.Stream.svg?label=NuGet&style=flat&logo=nuget  )] ( https://www.nuget.org/packages/ nanoFramework.Logging.Stream/  )  | 
1919
2020
2121## Feedback and documentation  
@@ -26,7 +26,7 @@ Join our Discord community [here](https://discord.gg/gCyBu8T).
2626
2727## Credits  
2828
29- The list of contributors to this project can be found at [ CONTRIBUTORS] ( https://github.com/nanoframework/Home/blob/master /CONTRIBUTORS.md ) .
29+ The list of contributors to this project can be found at [ CONTRIBUTORS] ( https://github.com/nanoframework/Home/blob/main /CONTRIBUTORS.md ) .
3030
3131## License  
3232
@@ -109,8 +109,8 @@ Note that you can adjust the baud speed and all other elements.
109109Or directly using a SerialLogger:
110110
111111``` csharp 
112- SerialDevice  _serial ;
113- _serial  =  SerialDevice . FromId (" COM6" 115200 );
112+ SerialPort  _serial ;
113+ _serial  =  new   SerialPort (" COM6" 115200 );
114114SerialLogger  _logger  =  new  SerialLogger (ref  _serial );
115115_logger .MinLogLevel  =  LogLevel .Trace ; 
116116_logger .LogTrace (" This is a trace" 
@@ -174,9 +174,71 @@ _logger.LogTrace("This won't be displayed, only critical will be");
174174_logger .LogCritical (" Critical message will be displayed" 
175175``` 
176176
177+ ### Create your own formatting  
178+ 
179+ You can use a custom formatter which will give you the name of the logger, the log level, the event ID, the message itself and a potential exception. The function definition should follow the following pattern:
180+ 
181+ ``` csharp 
182+ public  interface  IMessageFormatter 
183+ {     
184+     string  MessageFormatter (string  className , LogLevel  logLevel , EventId  eventId , string  state , Exception  exception );
185+ }
186+ ``` 
187+ 
188+ ** Important** : this function will be called directly, without instantiating the class it is part of. So make sure either this function is a static, either it's part of the class using the logger. The static option always works. The interface is given for convenience and to give the format.
189+ 
190+ To setup the formatting, just use the following line. The type of the class containing the function and the exact name of the function are required.
191+ 
192+ ``` csharp 
193+ LoggerExtensions .MessageFormatter  =  typeof (MyFormatter ).GetType ().GetMethod (" MessageFormatterStatic" 
194+ 
195+ public  class  MyFormatter 
196+ {        
197+     public  string  MessageFormatterStatic (string  className , LogLevel  logLevel , EventId  eventId , string  state , Exception  exception )
198+     {
199+         string  logstr  =  string .Empty ;
200+         switch  (logLevel )
201+         {
202+             case  LogLevel .Trace :
203+                 logstr  =  " TRACE: " 
204+                 break ;
205+             case  LogLevel .Debug :
206+                 logstr  =  " I love debug: " 
207+                 break ;
208+             case  LogLevel .Warning :
209+                 logstr  =  " WARNING: " 
210+                 break ;
211+             case  LogLevel .Error :
212+                 logstr  =  " ERROR: " 
213+                 break ;
214+             case  LogLevel .Critical :
215+                 logstr  =  " CRITICAL:" 
216+                 break ;
217+             case  LogLevel .None :
218+             case  LogLevel .Information :
219+             default :
220+                 break ;
221+         }
222+ 
223+         string  eventstr  =  eventId .Id  !=  0  ?  $"  Event ID: {eventId }, " :  string .Empty ;
224+         string  msg  =  $" [{className }] {eventstr }{logstr } {state }" 
225+         if  (exception  !=  null )
226+         {
227+             msg  +=  $"  {exception }" 
228+         }
229+ 
230+         return  msg ;
231+     }
232+ }
233+ ``` 
234+ 
235+ You are free to use anything you'd like and format as you like the message.
236+ 
237+ Note: It is ** not**  necessary to add a \r\n at the end, this is done by each logger.
238+ 
177239## Code of Conduct  
178240
179- This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior  in our community.
241+ This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behaviour  in our community.
180242For more information see the [ .NET Foundation Code of Conduct] ( https://dotnetfoundation.org/code-of-conduct ) .
181243
182244### .NET Foundation  
0 commit comments