Repository files navigation

FastLog.Net

NugetCode SmellsMaintainability RatingSecurity RatingBugsVulnerabilitiesLines of CodeDuplicated Lines (%)Reliability RatingLicense

FastLog.Net is the fastest , most efficient and high performance logger for .Net

โœ” Easy to use and develop , clean code , extensible agents and log model , and also designed to be fully thread-safe.

โœ” FastLog.Net supports structured logging and enhanced Json format for Exception class.

โœ” FastLog.Net uses thread-safe queueing technique to enqueue the logging request(s) and release your thread
almost immediately after you call a logging method.

โœ” FastLog.Net uses fluent builder pattern to create the logger object easily.


Features ๐Ÿ’ฏ

FastLog.Net features :

  • Supported Logging Events :
    • INFO
    • NOTE
    • TODO
    • WARNING
    • ALERT
    • DEBUG
    • ERROR
    • EXCEPTION โ†’ Specially designed for .Net Exception class to keep all details with nice json format.
    • SYSTEM
    • SECURITY
    • CONSOLE โ†’ Designed to log the "Console Output".

  • Agents :
    • Text File Agent which supports both plain text and json format with ability to handle log file max size.

    • Colorized Console Agent which also supports text and json output. Uses FluentConsole.Net

    • Beep Agent (works only on Windowsยฎ OS) which is resposible to make beep sound from BIOS or system speaker with fully customizable event type.

    • Debug/Trace Agents help you to log your events on debug or trace system.

    • Run Process Agent will run a specific process in "Noraml" or "As administrator" privileges , based on a specific or all events.

    • Method Execution Agent will call a method in your code , based on a specific or all events.

    • Heavy Operation Simulator Agent simulates an heavy IO bound operation (like email sending or http operation) , this agent is used for testing the FastLog.Net or create a delay intentionally between the agents.

Note:
All agents support Event Type filtering , so you can easily specify that your agent should be executed on which event type(s).
For example: You can add a "Beep Agent" with "Exception" log event , so the beep agent will only execute on "Exceptions" not other logging events.


  • Internal Events Logger:
    • FastLog.Net has a powerful and structured internal logging system to log and monitor internal exceptions or event which occured in the library itself !

  • Thread Safety:
    • FastLog.Net has an internal queue list which is designed fully thread-safe , it's really not matter how many thread(s) call the logging methods simultaneously , it will get your request(s) and put in the queue and immediately release your thread ! Then process your logging request(s) in the background.

Contributions ๐Ÿค

Since this is a new repository , there's no contributor yet! , But FastLog.Net welcomes and appreciates any contribution , pull request or bug report.

If you'd like to contribute, please read the How It Works section and then take a look at ToDo List to get involved !

Note:
The srouce code is fully commented.


How To Use โ”

Step 1 ๐Ÿ‘‡

  • Create the Internal Logger agent with fluent builder pattern :
InternalLoggerinternalLogger=InternalLogger.Create().UseJsonFormat().SaveInternalEventsToFile(@"Logs\InternalEventsLog.log").DeleteTheLogFileWhenExceededTheMaximumSizeOf(20).PrintOnConsole();

Note:
Internal logger agent is responsible for logging the events occured in the FastLog.Net internally (including exceptions).

Step 2 ๐Ÿ‘‡

  • Create the Logger Configuration with fluent builder pattern :
ConfigManagerloggerConfig=ConfigManager.Create().WithLoggerName("FastLog.Netยฎ Logger").WithMaxEventsToKeepInMemory(1_000);

Warning:
There is "RunAgentsInParallelMode" feature you can use to run agent(s) in parallel , but in most cases it's NOT recommended because may have considerable negative impact on performance.

Step 3 ๐Ÿ‘‡

  • Create the Logger with fluent builder pattern :
LoggerfastLogger=Logger.Create().WithInternalLogger(internalLogger).WithConfiguration(loggerConfig).WithAgents()// Add a "Console Agent" with Json format..AddConsoleAgent().UseJsonFormat().BuildAgent()// Add a "Beep Agent"..AddBeepAgent().BuildAgent()// Add a "Debug System Agent"..AddDebugSystemAgent().BuildAgent()// Add a "TextFile Agent" with Json format and will be re-created when reached to 10 megabytes..AddTextFileAgent().UseJsonFormat().SaveLogToFile("Logs\\TestLog.json").DeleteTheLogFileWhenExceededTheMaximumSizeOf(10).BuildAgent()// Add a "TextFile Agent" with Plain format and will be re-created when reached to 20 megabytes..AddTextFileAgent().SaveLogToFile("Logs\\TestLogPlain.txt").DeleteTheLogFileWhenExceededTheMaximumSizeOf(20).BuildAgent()// And Finally build the logger..BuildLogger();// Start the FastLog.Net engine in the background.fastLogger.StartLogger();

Final Step ๐Ÿ‘‡

  • FastLog.Net is ready , just call a logging method from anywhere of your code :
_=fastLogger.LogInfo("This is test logging INFO event);
awaitfastLogger.LogException(newInvalidOperationException());awaitfastLogger.LogException(newException("This is a test exception i want to throw !!"));awaitfastLogger.LogSystem("The system is gonna be restarted !");

Warning:
Since the FastLog.Net uses the background engine to process the requested log event(s) , so we MUST await "ProcessAllEventsInQueue()" method until all request(s) in the queue to be processed before the app/service termination.

awaitProcessAllEventsInQueue();

How It Works โ“

Soon...


Limitations โŒ

  • However the FastLog.Net is thread-safe BUT it is NOT recommended to build two or more agents with the same logging file , so this limitation applied to the FastLog.Net intentionally to prevent two or more agents write and manage the same logging file.

  • The FastLog.Net queue has been limited to handle up to the 1,000,000 logging events at the same time.This limitation has been set to prevent uncontrolled memory usage.


โ€ผ Known Issues

Not Reported Yet! ๐Ÿ˜Ž


ยฉ License

FastLog.Net is an open source software, licensed under the terms of MIT license. See LICENSE for more details.


๐Ÿ›  How to build

Use Visual Studio 2022 and open the solution 'FastLog.Net.sln'.

FastLog.Net solution is setup to support following .Net versions :

  • .Net Core 8.0
  • .Net Core 7.0
  • .Net Core 6.0
  • .Net Framework 4.8

Note:
Since the FastLog.Net solution is supporting multi target frameworks , to build the solution successfully you should install all .Net versions above , otherwise you can easily exclude not interested framework(s) by editing TargetFrameworks tag in the FastLog.Net Project File.


Donations ๐Ÿ’ฒ

If you would like to financially support FastLog.Net, first of all, thank you! Please read DONATIONS for my crypto wallets !


Version History ๐Ÿ•™

Please read CHANGELOG for more and track changing details.

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all \u003cpre\u003e\u003ccode\u003e blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks"); } } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); } })(); (function(){ try { var __m = "github.com"; var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

FastLog.Net

NugetCode SmellsMaintainability RatingSecurity RatingBugsVulnerabilitiesLines of CodeDuplicated Lines (%)Reliability RatingLicense

FastLog.Net is the fastest , most efficient and high performance logger for .Net

โœ” Easy to use and develop , clean code , extensible agents and log model , and also designed to be fully thread-safe.

โœ” FastLog.Net supports structured logging and enhanced Json format for Exception class.

โœ” FastLog.Net uses thread-safe queueing technique to enqueue the logging request(s) and release your thread
almost immediately after you call a logging method.

โœ” FastLog.Net uses fluent builder pattern to create the logger object easily.


Features ๐Ÿ’ฏ

FastLog.Net features :

  • Supported Logging Events :
    • INFO
    • NOTE
    • TODO
    • WARNING
    • ALERT
    • DEBUG
    • ERROR
    • EXCEPTION โ†’ Specially designed for .Net Exception class to keep all details with nice json format.
    • SYSTEM
    • SECURITY
    • CONSOLE โ†’ Designed to log the "Console Output".

  • Agents :
    • Text File Agent which supports both plain text and json format with ability to handle log file max size.

    • Colorized Console Agent which also supports text and json output. Uses FluentConsole.Net

    • Beep Agent (works only on Windowsยฎ OS) which is resposible to make beep sound from BIOS or system speaker with fully customizable event type.

    • Debug/Trace Agents help you to log your events on debug or trace system.

    • Run Process Agent will run a specific process in "Noraml" or "As administrator" privileges , based on a specific or all events.

    • Method Execution Agent will call a method in your code , based on a specific or all events.

    • Heavy Operation Simulator Agent simulates an heavy IO bound operation (like email sending or http operation) , this agent is used for testing the FastLog.Net or create a delay intentionally between the agents.

Note:
All agents support Event Type filtering , so you can easily specify that your agent should be executed on which event type(s).
For example: You can add a "Beep Agent" with "Exception" log event , so the beep agent will only execute on "Exceptions" not other logging events.


  • Internal Events Logger:
    • FastLog.Net has a powerful and structured internal logging system to log and monitor internal exceptions or event which occured in the library itself !

  • Thread Safety:
    • FastLog.Net has an internal queue list which is designed fully thread-safe , it's really not matter how many thread(s) call the logging methods simultaneously , it will get your request(s) and put in the queue and immediately release your thread ! Then process your logging request(s) in the background.

Contributions ๐Ÿค

Since this is a new repository , there's no contributor yet! , But FastLog.Net welcomes and appreciates any contribution , pull request or bug report.

If you'd like to contribute, please read the How It Works section and then take a look at ToDo List to get involved !

Note:
The srouce code is fully commented.


How To Use โ”

Step 1 ๐Ÿ‘‡

  • Create the Internal Logger agent with fluent builder pattern :
InternalLoggerinternalLogger=InternalLogger.Create().UseJsonFormat().SaveInternalEventsToFile(@"Logs\InternalEventsLog.log").DeleteTheLogFileWhenExceededTheMaximumSizeOf(20).PrintOnConsole();

Note:
Internal logger agent is responsible for logging the events occured in the FastLog.Net internally (including exceptions).

Step 2 ๐Ÿ‘‡

  • Create the Logger Configuration with fluent builder pattern :
ConfigManagerloggerConfig=ConfigManager.Create().WithLoggerName("FastLog.Netยฎ Logger").WithMaxEventsToKeepInMemory(1_000);

Warning:
There is "RunAgentsInParallelMode" feature you can use to run agent(s) in parallel , but in most cases it's NOT recommended because may have considerable negative impact on performance.

Step 3 ๐Ÿ‘‡

  • Create the Logger with fluent builder pattern :
LoggerfastLogger=Logger.Create().WithInternalLogger(internalLogger).WithConfiguration(loggerConfig).WithAgents()// Add a "Console Agent" with Json format..AddConsoleAgent().UseJsonFormat().BuildAgent()// Add a "Beep Agent"..AddBeepAgent().BuildAgent()// Add a "Debug System Agent"..AddDebugSystemAgent().BuildAgent()// Add a "TextFile Agent" with Json format and will be re-created when reached to 10 megabytes..AddTextFileAgent().UseJsonFormat().SaveLogToFile("Logs\\TestLog.json").DeleteTheLogFileWhenExceededTheMaximumSizeOf(10).BuildAgent()// Add a "TextFile Agent" with Plain format and will be re-created when reached to 20 megabytes..AddTextFileAgent().SaveLogToFile("Logs\\TestLogPlain.txt").DeleteTheLogFileWhenExceededTheMaximumSizeOf(20).BuildAgent()// And Finally build the logger..BuildLogger();// Start the FastLog.Net engine in the background.fastLogger.StartLogger();

Final Step ๐Ÿ‘‡

  • FastLog.Net is ready , just call a logging method from anywhere of your code :
_=fastLogger.LogInfo("This is test logging INFO event);
awaitfastLogger.LogException(newInvalidOperationException());awaitfastLogger.LogException(newException("This is a test exception i want to throw !!"));awaitfastLogger.LogSystem("The system is gonna be restarted !");

Warning:
Since the FastLog.Net uses the background engine to process the requested log event(s) , so we MUST await "ProcessAllEventsInQueue()" method until all request(s) in the queue to be processed before the app/service termination.

awaitProcessAllEventsInQueue();

How It Works โ“

Soon...


Limitations โŒ

  • However the FastLog.Net is thread-safe BUT it is NOT recommended to build two or more agents with the same logging file , so this limitation applied to the FastLog.Net intentionally to prevent two or more agents write and manage the same logging file.

  • The FastLog.Net queue has been limited to handle up to the 1,000,000 logging events at the same time.This limitation has been set to prevent uncontrolled memory usage.


โ€ผ Known Issues

Not Reported Yet! ๐Ÿ˜Ž


ยฉ License

FastLog.Net is an open source software, licensed under the terms of MIT license. See LICENSE for more details.


๐Ÿ›  How to build

Use Visual Studio 2022 and open the solution 'FastLog.Net.sln'.

FastLog.Net solution is setup to support following .Net versions :

  • .Net Core 8.0
  • .Net Core 7.0
  • .Net Core 6.0
  • .Net Framework 4.8

Note:
Since the FastLog.Net solution is supporting multi target frameworks , to build the solution successfully you should install all .Net versions above , otherwise you can easily exclude not interested framework(s) by editing TargetFrameworks tag in the FastLog.Net Project File.


Donations ๐Ÿ’ฒ

If you would like to financially support FastLog.Net, first of all, thank you! Please read DONATIONS for my crypto wallets !


Version History ๐Ÿ•™

Please read CHANGELOG for more and track changing details.

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

FastLog.Net

NugetCode SmellsMaintainability RatingSecurity RatingBugsVulnerabilitiesLines of CodeDuplicated Lines (%)Reliability RatingLicense

FastLog.Net is the fastest , most efficient and high performance logger for .Net

โœ” Easy to use and develop , clean code , extensible agents and log model , and also designed to be fully thread-safe.

โœ” FastLog.Net supports structured logging and enhanced Json format for Exception class.

โœ” FastLog.Net uses thread-safe queueing technique to enqueue the logging request(s) and release your thread
almost immediately after you call a logging method.

โœ” FastLog.Net uses fluent builder pattern to create the logger object easily.


Features ๐Ÿ’ฏ

FastLog.Net features :

  • Supported Logging Events :
    • INFO
    • NOTE
    • TODO
    • WARNING
    • ALERT
    • DEBUG
    • ERROR
    • EXCEPTION โ†’ Specially designed for .Net Exception class to keep all details with nice json format.
    • SYSTEM
    • SECURITY
    • CONSOLE โ†’ Designed to log the "Console Output".

  • Agents :
    • Text File Agent which supports both plain text and json format with ability to handle log file max size.

    • Colorized Console Agent which also supports text and json output. Uses FluentConsole.Net

    • Beep Agent (works only on Windowsยฎ OS) which is resposible to make beep sound from BIOS or system speaker with fully customizable event type.

    • Debug/Trace Agents help you to log your events on debug or trace system.

    • Run Process Agent will run a specific process in "Noraml" or "As administrator" privileges , based on a specific or all events.

    • Method Execution Agent will call a method in your code , based on a specific or all events.

    • Heavy Operation Simulator Agent simulates an heavy IO bound operation (like email sending or http operation) , this agent is used for testing the FastLog.Net or create a delay intentionally between the agents.

Note:
All agents support Event Type filtering , so you can easily specify that your agent should be executed on which event type(s).
For example: You can add a "Beep Agent" with "Exception" log event , so the beep agent will only execute on "Exceptions" not other logging events.


  • Internal Events Logger:
    • FastLog.Net has a powerful and structured internal logging system to log and monitor internal exceptions or event which occured in the library itself !

  • Thread Safety:
    • FastLog.Net has an internal queue list which is designed fully thread-safe , it's really not matter how many thread(s) call the logging methods simultaneously , it will get your request(s) and put in the queue and immediately release your thread ! Then process your logging request(s) in the background.

Contributions ๐Ÿค

Since this is a new repository , there's no contributor yet! , But FastLog.Net welcomes and appreciates any contribution , pull request or bug report.

If you'd like to contribute, please read the How It Works section and then take a look at ToDo List to get involved !

Note:
The srouce code is fully commented.


How To Use โ”

Step 1 ๐Ÿ‘‡

  • Create the Internal Logger agent with fluent builder pattern :
InternalLoggerinternalLogger=InternalLogger.Create().UseJsonFormat().SaveInternalEventsToFile(@"Logs\InternalEventsLog.log").DeleteTheLogFileWhenExceededTheMaximumSizeOf(20).PrintOnConsole();

Note:
Internal logger agent is responsible for logging the events occured in the FastLog.Net internally (including exceptions).

Step 2 ๐Ÿ‘‡

  • Create the Logger Configuration with fluent builder pattern :
ConfigManagerloggerConfig=ConfigManager.Create().WithLoggerName("FastLog.Netยฎ Logger").WithMaxEventsToKeepInMemory(1_000);

Warning:
There is "RunAgentsInParallelMode" feature you can use to run agent(s) in parallel , but in most cases it's NOT recommended because may have considerable negative impact on performance.

Step 3 ๐Ÿ‘‡

  • Create the Logger with fluent builder pattern :
LoggerfastLogger=Logger.Create().WithInternalLogger(internalLogger).WithConfiguration(loggerConfig).WithAgents()// Add a "Console Agent" with Json format..AddConsoleAgent().UseJsonFormat().BuildAgent()// Add a "Beep Agent"..AddBeepAgent().BuildAgent()// Add a "Debug System Agent"..AddDebugSystemAgent().BuildAgent()// Add a "TextFile Agent" with Json format and will be re-created when reached to 10 megabytes..AddTextFileAgent().UseJsonFormat().SaveLogToFile("Logs\\TestLog.json").DeleteTheLogFileWhenExceededTheMaximumSizeOf(10).BuildAgent()// Add a "TextFile Agent" with Plain format and will be re-created when reached to 20 megabytes..AddTextFileAgent().SaveLogToFile("Logs\\TestLogPlain.txt").DeleteTheLogFileWhenExceededTheMaximumSizeOf(20).BuildAgent()// And Finally build the logger..BuildLogger();// Start the FastLog.Net engine in the background.fastLogger.StartLogger();

Final Step ๐Ÿ‘‡

  • FastLog.Net is ready , just call a logging method from anywhere of your code :
_=fastLogger.LogInfo("This is test logging INFO event);
awaitfastLogger.LogException(newInvalidOperationException());awaitfastLogger.LogException(newException("This is a test exception i want to throw !!"));awaitfastLogger.LogSystem("The system is gonna be restarted !");

Warning:
Since the FastLog.Net uses the background engine to process the requested log event(s) , so we MUST await "ProcessAllEventsInQueue()" method until all request(s) in the queue to be processed before the app/service termination.

awaitProcessAllEventsInQueue();

How It Works โ“

Soon...


Limitations โŒ

  • However the FastLog.Net is thread-safe BUT it is NOT recommended to build two or more agents with the same logging file , so this limitation applied to the FastLog.Net intentionally to prevent two or more agents write and manage the same logging file.

  • The FastLog.Net queue has been limited to handle up to the 1,000,000 logging events at the same time.This limitation has been set to prevent uncontrolled memory usage.


โ€ผ Known Issues

Not Reported Yet! ๐Ÿ˜Ž


ยฉ License

FastLog.Net is an open source software, licensed under the terms of MIT license. See LICENSE for more details.


๐Ÿ›  How to build

Use Visual Studio 2022 and open the solution 'FastLog.Net.sln'.

FastLog.Net solution is setup to support following .Net versions :

  • .Net Core 8.0
  • .Net Core 7.0
  • .Net Core 6.0
  • .Net Framework 4.8

Note:
Since the FastLog.Net solution is supporting multi target frameworks , to build the solution successfully you should install all .Net versions above , otherwise you can easily exclude not interested framework(s) by editing TargetFrameworks tag in the FastLog.Net Project File.


Donations ๐Ÿ’ฒ

If you would like to financially support FastLog.Net, first of all, thank you! Please read DONATIONS for my crypto wallets !


Version History ๐Ÿ•™

Please read CHANGELOG for more and track changing details.

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length \u003e 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

FastLog.Net

NugetCode SmellsMaintainability RatingSecurity RatingBugsVulnerabilitiesLines of CodeDuplicated Lines (%)Reliability RatingLicense

FastLog.Net is the fastest , most efficient and high performance logger for .Net

โœ” Easy to use and develop , clean code , extensible agents and log model , and also designed to be fully thread-safe.

โœ” FastLog.Net supports structured logging and enhanced Json format for Exception class.

โœ” FastLog.Net uses thread-safe queueing technique to enqueue the logging request(s) and release your thread
almost immediately after you call a logging method.

โœ” FastLog.Net uses fluent builder pattern to create the logger object easily.


Features ๐Ÿ’ฏ

FastLog.Net features :

  • Supported Logging Events :
    • INFO
    • NOTE
    • TODO
    • WARNING
    • ALERT
    • DEBUG
    • ERROR
    • EXCEPTION โ†’ Specially designed for .Net Exception class to keep all details with nice json format.
    • SYSTEM
    • SECURITY
    • CONSOLE โ†’ Designed to log the "Console Output".

  • Agents :
    • Text File Agent which supports both plain text and json format with ability to handle log file max size.

    • Colorized Console Agent which also supports text and json output. Uses FluentConsole.Net

    • Beep Agent (works only on Windowsยฎ OS) which is resposible to make beep sound from BIOS or system speaker with fully customizable event type.

    • Debug/Trace Agents help you to log your events on debug or trace system.

    • Run Process Agent will run a specific process in "Noraml" or "As administrator" privileges , based on a specific or all events.

    • Method Execution Agent will call a method in your code , based on a specific or all events.

    • Heavy Operation Simulator Agent simulates an heavy IO bound operation (like email sending or http operation) , this agent is used for testing the FastLog.Net or create a delay intentionally between the agents.

Note:
All agents support Event Type filtering , so you can easily specify that your agent should be executed on which event type(s).
For example: You can add a "Beep Agent" with "Exception" log event , so the beep agent will only execute on "Exceptions" not other logging events.


  • Internal Events Logger:
    • FastLog.Net has a powerful and structured internal logging system to log and monitor internal exceptions or event which occured in the library itself !

  • Thread Safety:
    • FastLog.Net has an internal queue list which is designed fully thread-safe , it's really not matter how many thread(s) call the logging methods simultaneously , it will get your request(s) and put in the queue and immediately release your thread ! Then process your logging request(s) in the background.

Contributions ๐Ÿค

Since this is a new repository , there's no contributor yet! , But FastLog.Net welcomes and appreciates any contribution , pull request or bug report.

If you'd like to contribute, please read the How It Works section and then take a look at ToDo List to get involved !

Note:
The srouce code is fully commented.


How To Use โ”

Step 1 ๐Ÿ‘‡

  • Create the Internal Logger agent with fluent builder pattern :
InternalLoggerinternalLogger=InternalLogger.Create().UseJsonFormat().SaveInternalEventsToFile(@"Logs\InternalEventsLog.log").DeleteTheLogFileWhenExceededTheMaximumSizeOf(20).PrintOnConsole();

Note:
Internal logger agent is responsible for logging the events occured in the FastLog.Net internally (including exceptions).

Step 2 ๐Ÿ‘‡

  • Create the Logger Configuration with fluent builder pattern :
ConfigManagerloggerConfig=ConfigManager.Create().WithLoggerName("FastLog.Netยฎ Logger").WithMaxEventsToKeepInMemory(1_000);

Warning:
There is "RunAgentsInParallelMode" feature you can use to run agent(s) in parallel , but in most cases it's NOT recommended because may have considerable negative impact on performance.

Step 3 ๐Ÿ‘‡

  • Create the Logger with fluent builder pattern :
LoggerfastLogger=Logger.Create().WithInternalLogger(internalLogger).WithConfiguration(loggerConfig).WithAgents()// Add a "Console Agent" with Json format..AddConsoleAgent().UseJsonFormat().BuildAgent()// Add a "Beep Agent"..AddBeepAgent().BuildAgent()// Add a "Debug System Agent"..AddDebugSystemAgent().BuildAgent()// Add a "TextFile Agent" with Json format and will be re-created when reached to 10 megabytes..AddTextFileAgent().UseJsonFormat().SaveLogToFile("Logs\\TestLog.json").DeleteTheLogFileWhenExceededTheMaximumSizeOf(10).BuildAgent()// Add a "TextFile Agent" with Plain format and will be re-created when reached to 20 megabytes..AddTextFileAgent().SaveLogToFile("Logs\\TestLogPlain.txt").DeleteTheLogFileWhenExceededTheMaximumSizeOf(20).BuildAgent()// And Finally build the logger..BuildLogger();// Start the FastLog.Net engine in the background.fastLogger.StartLogger();

Final Step ๐Ÿ‘‡

  • FastLog.Net is ready , just call a logging method from anywhere of your code :
_=fastLogger.LogInfo("This is test logging INFO event);
awaitfastLogger.LogException(newInvalidOperationException());awaitfastLogger.LogException(newException("This is a test exception i want to throw !!"));awaitfastLogger.LogSystem("The system is gonna be restarted !");

Warning:
Since the FastLog.Net uses the background engine to process the requested log event(s) , so we MUST await "ProcessAllEventsInQueue()" method until all request(s) in the queue to be processed before the app/service termination.

awaitProcessAllEventsInQueue();

How It Works โ“

Soon...


Limitations โŒ

  • However the FastLog.Net is thread-safe BUT it is NOT recommended to build two or more agents with the same logging file , so this limitation applied to the FastLog.Net intentionally to prevent two or more agents write and manage the same logging file.

  • The FastLog.Net queue has been limited to handle up to the 1,000,000 logging events at the same time.This limitation has been set to prevent uncontrolled memory usage.


โ€ผ Known Issues

Not Reported Yet! ๐Ÿ˜Ž


ยฉ License

FastLog.Net is an open source software, licensed under the terms of MIT license. See LICENSE for more details.


๐Ÿ›  How to build

Use Visual Studio 2022 and open the solution 'FastLog.Net.sln'.

FastLog.Net solution is setup to support following .Net versions :

  • .Net Core 8.0
  • .Net Core 7.0
  • .Net Core 6.0
  • .Net Framework 4.8

Note:
Since the FastLog.Net solution is supporting multi target frameworks , to build the solution successfully you should install all .Net versions above , otherwise you can easily exclude not interested framework(s) by editing TargetFrameworks tag in the FastLog.Net Project File.


Donations ๐Ÿ’ฒ

If you would like to financially support FastLog.Net, first of all, thank you! Please read DONATIONS for my crypto wallets !


Version History ๐Ÿ•™

Please read CHANGELOG for more and track changing details.

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

FastLog.Net

NugetCode SmellsMaintainability RatingSecurity RatingBugsVulnerabilitiesLines of CodeDuplicated Lines (%)Reliability RatingLicense

FastLog.Net is the fastest , most efficient and high performance logger for .Net

โœ” Easy to use and develop , clean code , extensible agents and log model , and also designed to be fully thread-safe.

โœ” FastLog.Net supports structured logging and enhanced Json format for Exception class.

โœ” FastLog.Net uses thread-safe queueing technique to enqueue the logging request(s) and release your thread
almost immediately after you call a logging method.

โœ” FastLog.Net uses fluent builder pattern to create the logger object easily.


Features ๐Ÿ’ฏ

FastLog.Net features :

  • Supported Logging Events :
    • INFO
    • NOTE
    • TODO
    • WARNING
    • ALERT
    • DEBUG
    • ERROR
    • EXCEPTION โ†’ Specially designed for .Net Exception class to keep all details with nice json format.
    • SYSTEM
    • SECURITY
    • CONSOLE โ†’ Designed to log the "Console Output".

  • Agents :
    • Text File Agent which supports both plain text and json format with ability to handle log file max size.

    • Colorized Console Agent which also supports text and json output. Uses FluentConsole.Net

    • Beep Agent (works only on Windowsยฎ OS) which is resposible to make beep sound from BIOS or system speaker with fully customizable event type.

    • Debug/Trace Agents help you to log your events on debug or trace system.

    • Run Process Agent will run a specific process in "Noraml" or "As administrator" privileges , based on a specific or all events.

    • Method Execution Agent will call a method in your code , based on a specific or all events.

    • Heavy Operation Simulator Agent simulates an heavy IO bound operation (like email sending or http operation) , this agent is used for testing the FastLog.Net or create a delay intentionally between the agents.

Note:
All agents support Event Type filtering , so you can easily specify that your agent should be executed on which event type(s).
For example: You can add a "Beep Agent" with "Exception" log event , so the beep agent will only execute on "Exceptions" not other logging events.


  • Internal Events Logger:
    • FastLog.Net has a powerful and structured internal logging system to log and monitor internal exceptions or event which occured in the library itself !

  • Thread Safety:
    • FastLog.Net has an internal queue list which is designed fully thread-safe , it's really not matter how many thread(s) call the logging methods simultaneously , it will get your request(s) and put in the queue and immediately release your thread ! Then process your logging request(s) in the background.

Contributions ๐Ÿค

Since this is a new repository , there's no contributor yet! , But FastLog.Net welcomes and appreciates any contribution , pull request or bug report.

If you'd like to contribute, please read the How It Works section and then take a look at ToDo List to get involved !

Note:
The srouce code is fully commented.


How To Use โ”

Step 1 ๐Ÿ‘‡

  • Create the Internal Logger agent with fluent builder pattern :
InternalLoggerinternalLogger=InternalLogger.Create().UseJsonFormat().SaveInternalEventsToFile(@"Logs\InternalEventsLog.log").DeleteTheLogFileWhenExceededTheMaximumSizeOf(20).PrintOnConsole();

Note:
Internal logger agent is responsible for logging the events occured in the FastLog.Net internally (including exceptions).

Step 2 ๐Ÿ‘‡

  • Create the Logger Configuration with fluent builder pattern :
ConfigManagerloggerConfig=ConfigManager.Create().WithLoggerName("FastLog.Netยฎ Logger").WithMaxEventsToKeepInMemory(1_000);

Warning:
There is "RunAgentsInParallelMode" feature you can use to run agent(s) in parallel , but in most cases it's NOT recommended because may have considerable negative impact on performance.

Step 3 ๐Ÿ‘‡

  • Create the Logger with fluent builder pattern :
LoggerfastLogger=Logger.Create().WithInternalLogger(internalLogger).WithConfiguration(loggerConfig).WithAgents()// Add a "Console Agent" with Json format..AddConsoleAgent().UseJsonFormat().BuildAgent()// Add a "Beep Agent"..AddBeepAgent().BuildAgent()// Add a "Debug System Agent"..AddDebugSystemAgent().BuildAgent()// Add a "TextFile Agent" with Json format and will be re-created when reached to 10 megabytes..AddTextFileAgent().UseJsonFormat().SaveLogToFile("Logs\\TestLog.json").DeleteTheLogFileWhenExceededTheMaximumSizeOf(10).BuildAgent()// Add a "TextFile Agent" with Plain format and will be re-created when reached to 20 megabytes..AddTextFileAgent().SaveLogToFile("Logs\\TestLogPlain.txt").DeleteTheLogFileWhenExceededTheMaximumSizeOf(20).BuildAgent()// And Finally build the logger..BuildLogger();// Start the FastLog.Net engine in the background.fastLogger.StartLogger();

Final Step ๐Ÿ‘‡

  • FastLog.Net is ready , just call a logging method from anywhere of your code :
_=fastLogger.LogInfo("This is test logging INFO event);
awaitfastLogger.LogException(newInvalidOperationException());awaitfastLogger.LogException(newException("This is a test exception i want to throw !!"));awaitfastLogger.LogSystem("The system is gonna be restarted !");

Warning:
Since the FastLog.Net uses the background engine to process the requested log event(s) , so we MUST await "ProcessAllEventsInQueue()" method until all request(s) in the queue to be processed before the app/service termination.

awaitProcessAllEventsInQueue();

How It Works โ“

Soon...


Limitations โŒ

  • However the FastLog.Net is thread-safe BUT it is NOT recommended to build two or more agents with the same logging file , so this limitation applied to the FastLog.Net intentionally to prevent two or more agents write and manage the same logging file.

  • The FastLog.Net queue has been limited to handle up to the 1,000,000 logging events at the same time.This limitation has been set to prevent uncontrolled memory usage.


โ€ผ Known Issues

Not Reported Yet! ๐Ÿ˜Ž


ยฉ License

FastLog.Net is an open source software, licensed under the terms of MIT license. See LICENSE for more details.


๐Ÿ›  How to build

Use Visual Studio 2022 and open the solution 'FastLog.Net.sln'.

FastLog.Net solution is setup to support following .Net versions :

  • .Net Core 8.0
  • .Net Core 7.0
  • .Net Core 6.0
  • .Net Framework 4.8

Note:
Since the FastLog.Net solution is supporting multi target frameworks , to build the solution successfully you should install all .Net versions above , otherwise you can easily exclude not interested framework(s) by editing TargetFrameworks tag in the FastLog.Net Project File.


Donations ๐Ÿ’ฒ

If you would like to financially support FastLog.Net, first of all, thank you! Please read DONATIONS for my crypto wallets !


Version History ๐Ÿ•™

Please read CHANGELOG for more and track changing details.

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

FastLog.Net

NugetCode SmellsMaintainability RatingSecurity RatingBugsVulnerabilitiesLines of CodeDuplicated Lines (%)Reliability RatingLicense

FastLog.Net is the fastest , most efficient and high performance logger for .Net

โœ” Easy to use and develop , clean code , extensible agents and log model , and also designed to be fully thread-safe.

โœ” FastLog.Net supports structured logging and enhanced Json format for Exception class.

โœ” FastLog.Net uses thread-safe queueing technique to enqueue the logging request(s) and release your thread
almost immediately after you call a logging method.

โœ” FastLog.Net uses fluent builder pattern to create the logger object easily.


Features ๐Ÿ’ฏ

FastLog.Net features :

  • Supported Logging Events :
    • INFO
    • NOTE
    • TODO
    • WARNING
    • ALERT
    • DEBUG
    • ERROR
    • EXCEPTION โ†’ Specially designed for .Net Exception class to keep all details with nice json format.
    • SYSTEM
    • SECURITY
    • CONSOLE โ†’ Designed to log the "Console Output".

  • Agents :
    • Text File Agent which supports both plain text and json format with ability to handle log file max size.

    • Colorized Console Agent which also supports text and json output. Uses FluentConsole.Net

    • Beep Agent (works only on Windowsยฎ OS) which is resposible to make beep sound from BIOS or system speaker with fully customizable event type.

    • Debug/Trace Agents help you to log your events on debug or trace system.

    • Run Process Agent will run a specific process in "Noraml" or "As administrator" privileges , based on a specific or all events.

    • Method Execution Agent will call a method in your code , based on a specific or all events.

    • Heavy Operation Simulator Agent simulates an heavy IO bound operation (like email sending or http operation) , this agent is used for testing the FastLog.Net or create a delay intentionally between the agents.

Note:
All agents support Event Type filtering , so you can easily specify that your agent should be executed on which event type(s).
For example: You can add a "Beep Agent" with "Exception" log event , so the beep agent will only execute on "Exceptions" not other logging events.


  • Internal Events Logger:
    • FastLog.Net has a powerful and structured internal logging system to log and monitor internal exceptions or event which occured in the library itself !

  • Thread Safety:
    • FastLog.Net has an internal queue list which is designed fully thread-safe , it's really not matter how many thread(s) call the logging methods simultaneously , it will get your request(s) and put in the queue and immediately release your thread ! Then process your logging request(s) in the background.

Contributions ๐Ÿค

Since this is a new repository , there's no contributor yet! , But FastLog.Net welcomes and appreciates any contribution , pull request or bug report.

If you'd like to contribute, please read the How It Works section and then take a look at ToDo List to get involved !

Note:
The srouce code is fully commented.


How To Use โ”

Step 1 ๐Ÿ‘‡

  • Create the Internal Logger agent with fluent builder pattern :
InternalLoggerinternalLogger=InternalLogger.Create().UseJsonFormat().SaveInternalEventsToFile(@"Logs\InternalEventsLog.log").DeleteTheLogFileWhenExceededTheMaximumSizeOf(20).PrintOnConsole();

Note:
Internal logger agent is responsible for logging the events occured in the FastLog.Net internally (including exceptions).

Step 2 ๐Ÿ‘‡

  • Create the Logger Configuration with fluent builder pattern :
ConfigManagerloggerConfig=ConfigManager.Create().WithLoggerName("FastLog.Netยฎ Logger").WithMaxEventsToKeepInMemory(1_000);

Warning:
There is "RunAgentsInParallelMode" feature you can use to run agent(s) in parallel , but in most cases it's NOT recommended because may have considerable negative impact on performance.

Step 3 ๐Ÿ‘‡

  • Create the Logger with fluent builder pattern :
LoggerfastLogger=Logger.Create().WithInternalLogger(internalLogger).WithConfiguration(loggerConfig).WithAgents()// Add a "Console Agent" with Json format..AddConsoleAgent().UseJsonFormat().BuildAgent()// Add a "Beep Agent"..AddBeepAgent().BuildAgent()// Add a "Debug System Agent"..AddDebugSystemAgent().BuildAgent()// Add a "TextFile Agent" with Json format and will be re-created when reached to 10 megabytes..AddTextFileAgent().UseJsonFormat().SaveLogToFile("Logs\\TestLog.json").DeleteTheLogFileWhenExceededTheMaximumSizeOf(10).BuildAgent()// Add a "TextFile Agent" with Plain format and will be re-created when reached to 20 megabytes..AddTextFileAgent().SaveLogToFile("Logs\\TestLogPlain.txt").DeleteTheLogFileWhenExceededTheMaximumSizeOf(20).BuildAgent()// And Finally build the logger..BuildLogger();// Start the FastLog.Net engine in the background.fastLogger.StartLogger();

Final Step ๐Ÿ‘‡

  • FastLog.Net is ready , just call a logging method from anywhere of your code :
_=fastLogger.LogInfo("This is test logging INFO event);
awaitfastLogger.LogException(newInvalidOperationException());awaitfastLogger.LogException(newException("This is a test exception i want to throw !!"));awaitfastLogger.LogSystem("The system is gonna be restarted !");

Warning:
Since the FastLog.Net uses the background engine to process the requested log event(s) , so we MUST await "ProcessAllEventsInQueue()" method until all request(s) in the queue to be processed before the app/service termination.

awaitProcessAllEventsInQueue();

How It Works โ“

Soon...


Limitations โŒ

  • However the FastLog.Net is thread-safe BUT it is NOT recommended to build two or more agents with the same logging file , so this limitation applied to the FastLog.Net intentionally to prevent two or more agents write and manage the same logging file.

  • The FastLog.Net queue has been limited to handle up to the 1,000,000 logging events at the same time.This limitation has been set to prevent uncontrolled memory usage.


โ€ผ Known Issues

Not Reported Yet! ๐Ÿ˜Ž


ยฉ License

FastLog.Net is an open source software, licensed under the terms of MIT license. See LICENSE for more details.


๐Ÿ›  How to build

Use Visual Studio 2022 and open the solution 'FastLog.Net.sln'.

FastLog.Net solution is setup to support following .Net versions :

  • .Net Core 8.0
  • .Net Core 7.0
  • .Net Core 6.0
  • .Net Framework 4.8

Note:
Since the FastLog.Net solution is supporting multi target frameworks , to build the solution successfully you should install all .Net versions above , otherwise you can easily exclude not interested framework(s) by editing TargetFrameworks tag in the FastLog.Net Project File.


Donations ๐Ÿ’ฒ

If you would like to financially support FastLog.Net, first of all, thank you! Please read DONATIONS for my crypto wallets !


Version History ๐Ÿ•™

Please read CHANGELOG for more and track changing details.

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

FastLog.Net

NugetCode SmellsMaintainability RatingSecurity RatingBugsVulnerabilitiesLines of CodeDuplicated Lines (%)Reliability RatingLicense

FastLog.Net is the fastest , most efficient and high performance logger for .Net

โœ” Easy to use and develop , clean code , extensible agents and log model , and also designed to be fully thread-safe.

โœ” FastLog.Net supports structured logging and enhanced Json format for Exception class.

โœ” FastLog.Net uses thread-safe queueing technique to enqueue the logging request(s) and release your thread
almost immediately after you call a logging method.

โœ” FastLog.Net uses fluent builder pattern to create the logger object easily.


Features ๐Ÿ’ฏ

FastLog.Net features :

  • Supported Logging Events :
    • INFO
    • NOTE
    • TODO
    • WARNING
    • ALERT
    • DEBUG
    • ERROR
    • EXCEPTION โ†’ Specially designed for .Net Exception class to keep all details with nice json format.
    • SYSTEM
    • SECURITY
    • CONSOLE โ†’ Designed to log the "Console Output".

  • Agents :
    • Text File Agent which supports both plain text and json format with ability to handle log file max size.

    • Colorized Console Agent which also supports text and json output. Uses FluentConsole.Net

    • Beep Agent (works only on Windowsยฎ OS) which is resposible to make beep sound from BIOS or system speaker with fully customizable event type.

    • Debug/Trace Agents help you to log your events on debug or trace system.

    • Run Process Agent will run a specific process in "Noraml" or "As administrator" privileges , based on a specific or all events.

    • Method Execution Agent will call a method in your code , based on a specific or all events.

    • Heavy Operation Simulator Agent simulates an heavy IO bound operation (like email sending or http operation) , this agent is used for testing the FastLog.Net or create a delay intentionally between the agents.

Note:
All agents support Event Type filtering , so you can easily specify that your agent should be executed on which event type(s).
For example: You can add a "Beep Agent" with "Exception" log event , so the beep agent will only execute on "Exceptions" not other logging events.


  • Internal Events Logger:
    • FastLog.Net has a powerful and structured internal logging system to log and monitor internal exceptions or event which occured in the library itself !

  • Thread Safety:
    • FastLog.Net has an internal queue list which is designed fully thread-safe , it's really not matter how many thread(s) call the logging methods simultaneously , it will get your request(s) and put in the queue and immediately release your thread ! Then process your logging request(s) in the background.

Contributions ๐Ÿค

Since this is a new repository , there's no contributor yet! , But FastLog.Net welcomes and appreciates any contribution , pull request or bug report.

If you'd like to contribute, please read the How It Works section and then take a look at ToDo List to get involved !

Note:
The srouce code is fully commented.


How To Use โ”

Step 1 ๐Ÿ‘‡

  • Create the Internal Logger agent with fluent builder pattern :
InternalLoggerinternalLogger=InternalLogger.Create().UseJsonFormat().SaveInternalEventsToFile(@"Logs\InternalEventsLog.log").DeleteTheLogFileWhenExceededTheMaximumSizeOf(20).PrintOnConsole();

Note:
Internal logger agent is responsible for logging the events occured in the FastLog.Net internally (including exceptions).

Step 2 ๐Ÿ‘‡

  • Create the Logger Configuration with fluent builder pattern :
ConfigManagerloggerConfig=ConfigManager.Create().WithLoggerName("FastLog.Netยฎ Logger").WithMaxEventsToKeepInMemory(1_000);

Warning:
There is "RunAgentsInParallelMode" feature you can use to run agent(s) in parallel , but in most cases it's NOT recommended because may have considerable negative impact on performance.

Step 3 ๐Ÿ‘‡

  • Create the Logger with fluent builder pattern :
LoggerfastLogger=Logger.Create().WithInternalLogger(internalLogger).WithConfiguration(loggerConfig).WithAgents()// Add a "Console Agent" with Json format..AddConsoleAgent().UseJsonFormat().BuildAgent()// Add a "Beep Agent"..AddBeepAgent().BuildAgent()// Add a "Debug System Agent"..AddDebugSystemAgent().BuildAgent()// Add a "TextFile Agent" with Json format and will be re-created when reached to 10 megabytes..AddTextFileAgent().UseJsonFormat().SaveLogToFile("Logs\\TestLog.json").DeleteTheLogFileWhenExceededTheMaximumSizeOf(10).BuildAgent()// Add a "TextFile Agent" with Plain format and will be re-created when reached to 20 megabytes..AddTextFileAgent().SaveLogToFile("Logs\\TestLogPlain.txt").DeleteTheLogFileWhenExceededTheMaximumSizeOf(20).BuildAgent()// And Finally build the logger..BuildLogger();// Start the FastLog.Net engine in the background.fastLogger.StartLogger();

Final Step ๐Ÿ‘‡

  • FastLog.Net is ready , just call a logging method from anywhere of your code :
_=fastLogger.LogInfo("This is test logging INFO event);
awaitfastLogger.LogException(newInvalidOperationException());awaitfastLogger.LogException(newException("This is a test exception i want to throw !!"));awaitfastLogger.LogSystem("The system is gonna be restarted !");

Warning:
Since the FastLog.Net uses the background engine to process the requested log event(s) , so we MUST await "ProcessAllEventsInQueue()" method until all request(s) in the queue to be processed before the app/service termination.

awaitProcessAllEventsInQueue();

How It Works โ“

Soon...


Limitations โŒ

  • However the FastLog.Net is thread-safe BUT it is NOT recommended to build two or more agents with the same logging file , so this limitation applied to the FastLog.Net intentionally to prevent two or more agents write and manage the same logging file.

  • The FastLog.Net queue has been limited to handle up to the 1,000,000 logging events at the same time.This limitation has been set to prevent uncontrolled memory usage.


โ€ผ Known Issues

Not Reported Yet! ๐Ÿ˜Ž


ยฉ License

FastLog.Net is an open source software, licensed under the terms of MIT license. See LICENSE for more details.


๐Ÿ›  How to build

Use Visual Studio 2022 and open the solution 'FastLog.Net.sln'.

FastLog.Net solution is setup to support following .Net versions :

  • .Net Core 8.0
  • .Net Core 7.0
  • .Net Core 6.0
  • .Net Framework 4.8

Note:
Since the FastLog.Net solution is supporting multi target frameworks , to build the solution successfully you should install all .Net versions above , otherwise you can easily exclude not interested framework(s) by editing TargetFrameworks tag in the FastLog.Net Project File.


Donations ๐Ÿ’ฒ

If you would like to financially support FastLog.Net, first of all, thank you! Please read DONATIONS for my crypto wallets !


Version History ๐Ÿ•™

Please read CHANGELOG for more and track changing details.

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

FastLog.Net

NugetCode SmellsMaintainability RatingSecurity RatingBugsVulnerabilitiesLines of CodeDuplicated Lines (%)Reliability RatingLicense

FastLog.Net is the fastest , most efficient and high performance logger for .Net

โœ” Easy to use and develop , clean code , extensible agents and log model , and also designed to be fully thread-safe.

โœ” FastLog.Net supports structured logging and enhanced Json format for Exception class.

โœ” FastLog.Net uses thread-safe queueing technique to enqueue the logging request(s) and release your thread
almost immediately after you call a logging method.

โœ” FastLog.Net uses fluent builder pattern to create the logger object easily.


Features ๐Ÿ’ฏ

FastLog.Net features :

  • Supported Logging Events :
    • INFO
    • NOTE
    • TODO
    • WARNING
    • ALERT
    • DEBUG
    • ERROR
    • EXCEPTION โ†’ Specially designed for .Net Exception class to keep all details with nice json format.
    • SYSTEM
    • SECURITY
    • CONSOLE โ†’ Designed to log the "Console Output".

  • Agents :
    • Text File Agent which supports both plain text and json format with ability to handle log file max size.

    • Colorized Console Agent which also supports text and json output. Uses FluentConsole.Net

    • Beep Agent (works only on Windowsยฎ OS) which is resposible to make beep sound from BIOS or system speaker with fully customizable event type.

    • Debug/Trace Agents help you to log your events on debug or trace system.

    • Run Process Agent will run a specific process in "Noraml" or "As administrator" privileges , based on a specific or all events.

    • Method Execution Agent will call a method in your code , based on a specific or all events.

    • Heavy Operation Simulator Agent simulates an heavy IO bound operation (like email sending or http operation) , this agent is used for testing the FastLog.Net or create a delay intentionally between the agents.

Note:
All agents support Event Type filtering , so you can easily specify that your agent should be executed on which event type(s).
For example: You can add a "Beep Agent" with "Exception" log event , so the beep agent will only execute on "Exceptions" not other logging events.


  • Internal Events Logger:
    • FastLog.Net has a powerful and structured internal logging system to log and monitor internal exceptions or event which occured in the library itself !

  • Thread Safety:
    • FastLog.Net has an internal queue list which is designed fully thread-safe , it's really not matter how many thread(s) call the logging methods simultaneously , it will get your request(s) and put in the queue and immediately release your thread ! Then process your logging request(s) in the background.

Contributions ๐Ÿค

Since this is a new repository , there's no contributor yet! , But FastLog.Net welcomes and appreciates any contribution , pull request or bug report.

If you'd like to contribute, please read the How It Works section and then take a look at ToDo List to get involved !

Note:
The srouce code is fully commented.


How To Use โ”

Step 1 ๐Ÿ‘‡

  • Create the Internal Logger agent with fluent builder pattern :
InternalLoggerinternalLogger=InternalLogger.Create().UseJsonFormat().SaveInternalEventsToFile(@"Logs\InternalEventsLog.log").DeleteTheLogFileWhenExceededTheMaximumSizeOf(20).PrintOnConsole();

Note:
Internal logger agent is responsible for logging the events occured in the FastLog.Net internally (including exceptions).

Step 2 ๐Ÿ‘‡

  • Create the Logger Configuration with fluent builder pattern :
ConfigManagerloggerConfig=ConfigManager.Create().WithLoggerName("FastLog.Netยฎ Logger").WithMaxEventsToKeepInMemory(1_000);

Warning:
There is "RunAgentsInParallelMode" feature you can use to run agent(s) in parallel , but in most cases it's NOT recommended because may have considerable negative impact on performance.

Step 3 ๐Ÿ‘‡

  • Create the Logger with fluent builder pattern :
LoggerfastLogger=Logger.Create().WithInternalLogger(internalLogger).WithConfiguration(loggerConfig).WithAgents()// Add a "Console Agent" with Json format..AddConsoleAgent().UseJsonFormat().BuildAgent()// Add a "Beep Agent"..AddBeepAgent().BuildAgent()// Add a "Debug System Agent"..AddDebugSystemAgent().BuildAgent()// Add a "TextFile Agent" with Json format and will be re-created when reached to 10 megabytes..AddTextFileAgent().UseJsonFormat().SaveLogToFile("Logs\\TestLog.json").DeleteTheLogFileWhenExceededTheMaximumSizeOf(10).BuildAgent()// Add a "TextFile Agent" with Plain format and will be re-created when reached to 20 megabytes..AddTextFileAgent().SaveLogToFile("Logs\\TestLogPlain.txt").DeleteTheLogFileWhenExceededTheMaximumSizeOf(20).BuildAgent()// And Finally build the logger..BuildLogger();// Start the FastLog.Net engine in the background.fastLogger.StartLogger();

Final Step ๐Ÿ‘‡

  • FastLog.Net is ready , just call a logging method from anywhere of your code :
_=fastLogger.LogInfo("This is test logging INFO event);
awaitfastLogger.LogException(newInvalidOperationException());awaitfastLogger.LogException(newException("This is a test exception i want to throw !!"));awaitfastLogger.LogSystem("The system is gonna be restarted !");

Warning:
Since the FastLog.Net uses the background engine to process the requested log event(s) , so we MUST await "ProcessAllEventsInQueue()" method until all request(s) in the queue to be processed before the app/service termination.

awaitProcessAllEventsInQueue();

How It Works โ“

Soon...


Limitations โŒ

  • However the FastLog.Net is thread-safe BUT it is NOT recommended to build two or more agents with the same logging file , so this limitation applied to the FastLog.Net intentionally to prevent two or more agents write and manage the same logging file.

  • The FastLog.Net queue has been limited to handle up to the 1,000,000 logging events at the same time.This limitation has been set to prevent uncontrolled memory usage.


โ€ผ Known Issues

Not Reported Yet! ๐Ÿ˜Ž


ยฉ License

FastLog.Net is an open source software, licensed under the terms of MIT license. See LICENSE for more details.


๐Ÿ›  How to build

Use Visual Studio 2022 and open the solution 'FastLog.Net.sln'.

FastLog.Net solution is setup to support following .Net versions :

  • .Net Core 8.0
  • .Net Core 7.0
  • .Net Core 6.0
  • .Net Framework 4.8

Note:
Since the FastLog.Net solution is supporting multi target frameworks , to build the solution successfully you should install all .Net versions above , otherwise you can easily exclude not interested framework(s) by editing TargetFrameworks tag in the FastLog.Net Project File.


Donations ๐Ÿ’ฒ

If you would like to financially support FastLog.Net, first of all, thank you! Please read DONATIONS for my crypto wallets !


Version History ๐Ÿ•™

Please read CHANGELOG for more and track changing details.

Releases

Used by

Contributors

Languages