Update README.md (#2732)
fixed serious grammar and spelling issues throughout the file without touching the content
This commit is contained in:
		
							
								
								
									
										46
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										46
									
								
								README.md
									
									
									
									
									
								
							@@ -3,7 +3,7 @@
 | 
				
			|||||||
Very fast, header-only/compiled, C++ logging library. [](https://github.com/gabime/spdlog/actions/workflows/ci.yml)  [](https://ci.appveyor.com/project/gabime/spdlog) [](https://github.com/gabime/spdlog/releases/latest)
 | 
					Very fast, header-only/compiled, C++ logging library. [](https://github.com/gabime/spdlog/actions/workflows/ci.yml)  [](https://ci.appveyor.com/project/gabime/spdlog) [](https://github.com/gabime/spdlog/releases/latest)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Install 
 | 
					## Install 
 | 
				
			||||||
#### Header only version
 | 
					#### Header-only version
 | 
				
			||||||
Copy the include [folder](https://github.com/gabime/spdlog/tree/v1.x/include/spdlog) to your build tree and use a C++11 compiler.
 | 
					Copy the include [folder](https://github.com/gabime/spdlog/tree/v1.x/include/spdlog) to your build tree and use a C++11 compiler.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### Compiled version (recommended - much faster compile times)
 | 
					#### Compiled version (recommended - much faster compile times)
 | 
				
			||||||
@@ -39,7 +39,7 @@ $ cmake .. && make -j
 | 
				
			|||||||
## Features
 | 
					## Features
 | 
				
			||||||
* Very fast (see [benchmarks](#benchmarks) below).
 | 
					* Very fast (see [benchmarks](#benchmarks) below).
 | 
				
			||||||
* Headers only or compiled
 | 
					* Headers only or compiled
 | 
				
			||||||
* Feature rich formatting, using the excellent [fmt](https://github.com/fmtlib/fmt) library.
 | 
					* Feature-rich formatting, using the excellent [fmt](https://github.com/fmtlib/fmt) library.
 | 
				
			||||||
* Asynchronous mode (optional)
 | 
					* Asynchronous mode (optional)
 | 
				
			||||||
* [Custom](https://github.com/gabime/spdlog/wiki/3.-Custom-formatting) formatting.
 | 
					* [Custom](https://github.com/gabime/spdlog/wiki/3.-Custom-formatting) formatting.
 | 
				
			||||||
* Multi/Single threaded loggers.
 | 
					* Multi/Single threaded loggers.
 | 
				
			||||||
@@ -51,9 +51,9 @@ $ cmake .. && make -j
 | 
				
			|||||||
    * Windows event log.
 | 
					    * Windows event log.
 | 
				
			||||||
    * Windows debugger (```OutputDebugString(..)```).
 | 
					    * Windows debugger (```OutputDebugString(..)```).
 | 
				
			||||||
    * Easily [extendable](https://github.com/gabime/spdlog/wiki/4.-Sinks#implementing-your-own-sink) with custom log targets.
 | 
					    * Easily [extendable](https://github.com/gabime/spdlog/wiki/4.-Sinks#implementing-your-own-sink) with custom log targets.
 | 
				
			||||||
* Log filtering - log levels can be modified in runtime as well as in compile time.
 | 
					* Log filtering - log levels can be modified at runtime as well as compile time.
 | 
				
			||||||
* Support for loading log levels from argv or from environment var.
 | 
					* Support for loading log levels from argv or environment var.
 | 
				
			||||||
* [Backtrace](#backtrace-support) support - store debug messages in a ring buffer and display later on demand.
 | 
					* [Backtrace](#backtrace-support) support - store debug messages in a ring buffer and display them later on demand.
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
## Usage samples
 | 
					## Usage samples
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -92,7 +92,7 @@ int main()
 | 
				
			|||||||
#include "spdlog/sinks/stdout_color_sinks.h"
 | 
					#include "spdlog/sinks/stdout_color_sinks.h"
 | 
				
			||||||
void stdout_example()
 | 
					void stdout_example()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // create color multi threaded logger
 | 
					    // create a color multi-threaded logger
 | 
				
			||||||
    auto console = spdlog::stdout_color_mt("console");    
 | 
					    auto console = spdlog::stdout_color_mt("console");    
 | 
				
			||||||
    auto err_logger = spdlog::stderr_color_mt("stderr");    
 | 
					    auto err_logger = spdlog::stderr_color_mt("stderr");    
 | 
				
			||||||
    spdlog::get("console")->info("loggers can be retrieved from a global registry using the spdlog::get(logger_name)");
 | 
					    spdlog::get("console")->info("loggers can be retrieved from a global registry using the spdlog::get(logger_name)");
 | 
				
			||||||
@@ -121,7 +121,7 @@ void basic_logfile_example()
 | 
				
			|||||||
#include "spdlog/sinks/rotating_file_sink.h"
 | 
					#include "spdlog/sinks/rotating_file_sink.h"
 | 
				
			||||||
void rotating_example()
 | 
					void rotating_example()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // Create a file rotating logger with 5mb size max and 3 rotated files
 | 
					    // Create a file rotating logger with 5 MB size max and 3 rotated files
 | 
				
			||||||
    auto max_size = 1048576 * 5;
 | 
					    auto max_size = 1048576 * 5;
 | 
				
			||||||
    auto max_files = 3;
 | 
					    auto max_files = 3;
 | 
				
			||||||
    auto logger = spdlog::rotating_logger_mt("some_logger_name", "logs/rotating.txt", max_size, max_files);
 | 
					    auto logger = spdlog::rotating_logger_mt("some_logger_name", "logs/rotating.txt", max_size, max_files);
 | 
				
			||||||
@@ -135,7 +135,7 @@ void rotating_example()
 | 
				
			|||||||
#include "spdlog/sinks/daily_file_sink.h"
 | 
					#include "spdlog/sinks/daily_file_sink.h"
 | 
				
			||||||
void daily_example()
 | 
					void daily_example()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // Create a daily logger - a new file is created every day on 2:30am
 | 
					    // Create a daily logger - a new file is created every day at 2:30 am
 | 
				
			||||||
    auto logger = spdlog::daily_logger_mt("daily_logger", "logs/daily.txt", 2, 30);
 | 
					    auto logger = spdlog::daily_logger_mt("daily_logger", "logs/daily.txt", 2, 30);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -145,7 +145,7 @@ void daily_example()
 | 
				
			|||||||
#### Backtrace support
 | 
					#### Backtrace support
 | 
				
			||||||
```c++
 | 
					```c++
 | 
				
			||||||
// Debug messages can be stored in a ring buffer instead of being logged immediately.
 | 
					// Debug messages can be stored in a ring buffer instead of being logged immediately.
 | 
				
			||||||
// This is useful in order to display debug logs only when really needed (e.g. when error happens).
 | 
					// This is useful to display debug logs only when needed (e.g. when an error happens).
 | 
				
			||||||
// When needed, call dump_backtrace() to dump them to your log.
 | 
					// When needed, call dump_backtrace() to dump them to your log.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
spdlog::enable_backtrace(32); // Store the latest 32 messages in a buffer. 
 | 
					spdlog::enable_backtrace(32); // Store the latest 32 messages in a buffer. 
 | 
				
			||||||
@@ -154,7 +154,7 @@ for(int i = 0; i < 100; i++)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  spdlog::debug("Backtrace message {}", i); // not logged yet..
 | 
					  spdlog::debug("Backtrace message {}", i); // not logged yet..
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
// e.g. if some has error happened:
 | 
					// e.g. if some error happened:
 | 
				
			||||||
spdlog::dump_backtrace(); // log them now! show the last 32 messages
 | 
					spdlog::dump_backtrace(); // log them now! show the last 32 messages
 | 
				
			||||||
// or my_logger->dump_backtrace(32)..
 | 
					// or my_logger->dump_backtrace(32)..
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
@@ -163,7 +163,7 @@ spdlog::dump_backtrace(); // log them now! show the last 32 messages
 | 
				
			|||||||
#### Periodic flush
 | 
					#### Periodic flush
 | 
				
			||||||
```c++
 | 
					```c++
 | 
				
			||||||
// periodically flush all *registered* loggers every 3 seconds:
 | 
					// periodically flush all *registered* loggers every 3 seconds:
 | 
				
			||||||
// warning: only use if all your loggers are thread safe ("_mt" loggers)
 | 
					// warning: only use if all your loggers are thread-safe ("_mt" loggers)
 | 
				
			||||||
spdlog::flush_every(std::chrono::seconds(3));
 | 
					spdlog::flush_every(std::chrono::seconds(3));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
@@ -191,7 +191,7 @@ void stopwatch_example()
 | 
				
			|||||||
// {:X} - print in uppercase.
 | 
					// {:X} - print in uppercase.
 | 
				
			||||||
// {:s} - don't separate each byte with space.
 | 
					// {:s} - don't separate each byte with space.
 | 
				
			||||||
// {:p} - don't print the position on each line start.
 | 
					// {:p} - don't print the position on each line start.
 | 
				
			||||||
// {:n} - don't split the output to lines.
 | 
					// {:n} - don't split the output into lines.
 | 
				
			||||||
// {:a} - show ASCII if :n is not set.
 | 
					// {:a} - show ASCII if :n is not set.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "spdlog/fmt/bin_to_hex.h"
 | 
					#include "spdlog/fmt/bin_to_hex.h"
 | 
				
			||||||
@@ -211,11 +211,11 @@ void binary_example()
 | 
				
			|||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
---
 | 
					---
 | 
				
			||||||
#### Logger with multi sinks - each with different format and log level
 | 
					#### Logger with multi sinks - each with a different format and log level
 | 
				
			||||||
```c++
 | 
					```c++
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// create logger with 2 targets with different log levels and formats.
 | 
					// create loggers with 2 targets with different log levels and formats.
 | 
				
			||||||
// the console will show only warnings or errors, while the file will log all.
 | 
					// The console will show only warnings or errors, while the file will log all.
 | 
				
			||||||
void multi_sink_example()
 | 
					void multi_sink_example()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    auto console_sink = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();
 | 
					    auto console_sink = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();
 | 
				
			||||||
@@ -233,10 +233,10 @@ void multi_sink_example()
 | 
				
			|||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
---
 | 
					---
 | 
				
			||||||
#### User defined callbacks about log events
 | 
					#### User-defined callbacks about log events
 | 
				
			||||||
```c++
 | 
					```c++
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// create logger with a lambda function callback, the callback will be called
 | 
					// create a logger with a lambda function callback, the callback will be called
 | 
				
			||||||
// each time something is logged to the logger
 | 
					// each time something is logged to the logger
 | 
				
			||||||
void callback_example()
 | 
					void callback_example()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -287,7 +287,7 @@ void multi_sink_example2()
 | 
				
			|||||||
```
 | 
					```
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
---
 | 
					---
 | 
				
			||||||
#### User defined types
 | 
					#### User-defined types
 | 
				
			||||||
```c++
 | 
					```c++
 | 
				
			||||||
template<>
 | 
					template<>
 | 
				
			||||||
struct fmt::formatter<my_type> : fmt::formatter<std::string>
 | 
					struct fmt::formatter<my_type> : fmt::formatter<std::string>
 | 
				
			||||||
@@ -306,7 +306,7 @@ void user_defined_example()
 | 
				
			|||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
---
 | 
					---
 | 
				
			||||||
#### User defined flags in the log pattern
 | 
					#### User-defined flags in the log pattern
 | 
				
			||||||
```c++ 
 | 
					```c++ 
 | 
				
			||||||
// Log patterns can contain custom flags.
 | 
					// Log patterns can contain custom flags.
 | 
				
			||||||
// the following example will add new flag '%*' - which will be bound to a <my_formatter_flag> instance.
 | 
					// the following example will add new flag '%*' - which will be bound to a <my_formatter_flag> instance.
 | 
				
			||||||
@@ -371,14 +371,14 @@ void android_example()
 | 
				
			|||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
---
 | 
					---
 | 
				
			||||||
#### Load log levels from env variable or from argv
 | 
					#### Load log levels from the env variable or argv
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```c++
 | 
					```c++
 | 
				
			||||||
#include "spdlog/cfg/env.h"
 | 
					#include "spdlog/cfg/env.h"
 | 
				
			||||||
int main (int argc, char *argv[])
 | 
					int main (int argc, char *argv[])
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    spdlog::cfg::load_env_levels();
 | 
					    spdlog::cfg::load_env_levels();
 | 
				
			||||||
    // or from command line:
 | 
					    // or from the command line:
 | 
				
			||||||
    // ./example SPDLOG_LEVEL=info,mylogger=trace
 | 
					    // ./example SPDLOG_LEVEL=info,mylogger=trace
 | 
				
			||||||
    // #include "spdlog/cfg/argv.h" // for loading levels from argv
 | 
					    // #include "spdlog/cfg/argv.h" // for loading levels from argv
 | 
				
			||||||
    // spdlog::cfg::load_argv_levels(argc, argv);
 | 
					    // spdlog::cfg::load_argv_levels(argc, argv);
 | 
				
			||||||
@@ -395,8 +395,8 @@ $ ./example
 | 
				
			|||||||
---
 | 
					---
 | 
				
			||||||
#### Log file open/close event handlers
 | 
					#### Log file open/close event handlers
 | 
				
			||||||
```c++
 | 
					```c++
 | 
				
			||||||
// You can get callbacks from spdlog before/after log file has been opened or closed. 
 | 
					// You can get callbacks from spdlog before/after a log file has been opened or closed. 
 | 
				
			||||||
// This is useful for cleanup procedures or for adding something the start/end of the log files.
 | 
					// This is useful for cleanup procedures or for adding something to the start/end of the log file.
 | 
				
			||||||
void file_events_example()
 | 
					void file_events_example()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // pass the spdlog::file_event_handlers to file sinks for open/close log file notifications
 | 
					    // pass the spdlog::file_event_handlers to file sinks for open/close log file notifications
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user