You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+44-15Lines changed: 44 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,34 +10,40 @@ Please find all about the **ALox Logging Library**, including
10
10
at the [ALox Homepage](http://alexworx.github.io/ALox-Logging-Library).
11
11
12
12
13
-
##Overview ##
13
+
##Overview ##
14
14
15
-
ALox is a small and efficient software library that provides an ecosystem to support structured and organized log output.
15
+
ALox is a software library providing an ecosystem for structured and organized log output.
16
16
17
17
ALox is available as [ALox for C++ 11](http://alexworx.github.io/ALox-Logging-Library/cpp_ref/cppmainpage.html), [ALox for C#](http://alexworx.github.io/ALox-Logging-Library/cs_ref/csmainpage.html) and [ALox for Java](http://alexworx.github.io/ALox-Logging-Library/java_ref/javamainpage.html).
18
18
19
19
To reach this goal, ALox is featured by **ALib** (see ALib for [C++](http://alexworx.github.io/ALox-Logging-Library/cpp_ref/namespaceaworx_1_1lib.html),[C#](http://alexworx.github.io/ALox-Logging-Library/cs_ref/namespacecs_1_1aworx_1_1lib.html),[Java](http://alexworx.github.io/ALox-Logging-Library/java_ref/namespacecom_1_1aworx_1_1lib.html)), which is a basic utility library that among other goals
20
20
provides *'source-compatible'* types for the three languages.
21
21
22
-
ALox attempts to make logging as easy and lightweight as possible. We want you to **stop adding temporary debug output lines** into your code. Instead, write (with less effort!) short, nice and readable *ALox statements* that live in your code as if they were comment lines. Let ALox do the rest: Add meta information to the output, format the output, filter output based on verbosity level and based on your current topic of interest. Finally, get it all *pruned* out of your release executable, same as your source comments.
22
+
ALox attempts to make logging as easy and intuitive as possible. We want you to **stop adding temporary debug output lines** into your code. Instead, write (with less effort!) short, nice and readable *ALox statements* that live in your code as if they were comment lines. Let ALox do the rest: Add meta information to the output, format the output, filter output based on verbosity level and based on your current topic of interest. Finally, get it all *pruned* out of your release executable, same as your source comments.
23
23
24
24
On the other end of the list, ALox enables **release logging** for productive applications to collect mission critical **metrics from the field**.
25
25
26
-
This is **Version 1607**. In other versioning schemes, this would probably have been version **2.1**.
26
+
This is **Version 1702**.
27
27
28
-
##Features##
28
+
##Features##
29
29
30
-
***Open source**, MIT License.
31
-
* Jump-start **tutorials** for [ALox for C++](http://alexworx.github.io/ALox-Logging-Library/cpp_ref/cpptutorial.html),[ALox for C#](http://alexworx.github.io/ALox-Logging-Library/cs_ref/cstutorial.html) and [ALox for Java](http://alexworx.github.io/ALox-Logging-Library/java_ref/javatutorial.html)) and **Sample Projects**.
30
+
*Available for **C++ 11 ** (GNU/Linux, Windows OS, macOS), **C#** (.Net, Windows, Linux, Microsoft, Mono) and **Java**
31
+
(with Android support and extensions).
32
32
33
-
***Auto-configuration** (if not configured by your code) based on OS (GNU/Linux, Windows) and **detecting IDE** (VStudio, Eclipse, QTCreator, etc.). Minimal intrusiveness in respect to *cluttering* your code and what you need to make it really work.
33
+
***Free software**, published under Boost Software License.
34
34
35
-
* Formatted, **colorful, configurable log output** with support for ANSI compatible consoles and Windows OS consoles.
35
+
* Jump-start **tutorials** for [ALox for C++](http://alexworx.github.io/ALox-Logging-Library/cpp_ref/cpptutorial.html),[ALox for C#](http://alexworx.github.io/ALox-Logging-Library/cs_ref/cstutorial.html) and [ALox for Java](http://alexworx.github.io/ALox-Logging-Library/java_ref/javatutorial.html), **Sample Projects** and pre-configured project files for **different IDEs** and **CMake**.
36
+
37
+
***Formatted**, **colorful** and **configurable** log output** with support for ANSI compatible consoles and Windows OS consoles.
36
38
37
39
* Log lines **'clickable' in IDE** to jump to the corresponding source code line (depending on IDE).
38
40
39
41
* Automatic collection of **meta information** like time stamp, time-difference to previous log, executing thread or executing source scope information (platform/language dependent).
40
42
43
+
* Automatic removal, aka **'pruning'**, of *debug-log* statements from release code mostly without the need of pre-processor if/endif code cluttering. Optionally also automatic pruning of *release-log* statements. (In Java: implemented using [Proguard](http://proguard.sourceforge.net), with provision of ready to use configuration files.
44
+
45
+
- Minimal intrusiveness in respect to *cluttering* your code and what you need to make it really work.
46
+
41
47
* Use of external configuration (INI-files, command line parameters, environment variables, etc.) which allows developer specific local settings and greatly supports working in teams.
42
48
43
49
***Hierarchical 'Log-Domains'**, (like for example "MYAPP/UI", "MYAPP/DATABASE" that allow the classification of different log statements into user defined topics. Verbosity is controlled per domain to allow the programmer to concentrate on the area of current interest.
@@ -48,15 +54,13 @@ This is **Version 1607**. In other versioning schemes, this would probably have
48
54
49
55
* Support for **CMake**, **Eclipse**, **Visual Studio**, **QT Creator**, **Mono Develop** in combination with **GNU/Linux**, **Windows**, **Windows Phone** and **Android**. (Windows Phone in current versions not tested any more). Porting to other platforms should be easy.
50
56
51
-
* Very **fast** to minimize run-time overhead of logging (We just broke our former record and did **one million log lines in a second**, including meta information. This was of-course the C++ version doing release logging on release executable).
52
-
53
-
* Automatic removal, aka **'pruning'**, of *debug-log* statements from release code mostly without the need of pre-processor if/endif code cluttering. Optionally also automatic pruning of *release-log* statements. (In Java: implemented using [Proguard](http://proguard.sourceforge.net), with provision of ready to use configuration files.
57
+
* Very **fast** to minimize runtime overhead of logging (We just broke our former record and did **one million log lines in a second**, including meta information. This was of-course the C++ version doing release logging on release executable).
54
58
55
59
* Multiple **parallel log streams** with different *filters* and verbosity levels, e.g. for logging to the console and in parallel into a file.
56
60
57
61
***Extensible** with own loggers, which enables dedicated "data drains" (e.g. databases or Internet services) and custom output formatting. ALox provides a simple programming interface and internal architecture that is easy to learn, not overloaded by 'factories' and 'factory factories' ;-)
58
62
59
-
* Logging of <b>arbitrary objects</b> which means the whole ALox architecture is designed for logging 'objects' instead of just message strings. Only the implementation decides whether an object is - and if yes, how - an object is converted into a human readable string.
63
+
* Logging of <b>arbitrary objects</b> which means the whole ALox architecture is designed for logging 'objects' instead of just string messages. Only the logger instances which are attached at runtime, decide how logged data might be converted to human readable strings.
60
64
61
65
* Scope dependent **Log Data** to add debug variables that automatically get pruned like the debug-logging statments are.
62
66
@@ -72,11 +76,36 @@ This is **Version 1607**. In other versioning schemes, this would probably have
72
76
* Logging **Exceptions** (recursively with inner exceptions)
73
77
* Logging **XML trees**
74
78
75
-
* C++ version accepts arbitrary **3rd party string types**. This goal was reached by underlying A-Worx utility library *ALib* (open source, MIT License) which greatly [solved that problem](http://alexworx.github.io/ALox-Logging-Library/cpp_ref/namespaceaworx_1_1lib_1_1strings.html) using some *template meta programming* to relieve us from the (disastrous) string mix in the C++ world.
76
-
On the same token, conversion of **user defined types** to logable (string) objects is supported. After implementing the conversion once, you can just throw your custom types into ALox log statements, even as a part of a concatenated log message.
79
+
* C++ version:
80
+
* Compiled and tested on **GNU/Linux**, **Windows OS** and Apple **macOS**.
81
+
* Accepts **arbitrary objects** to be logged. This goal is reached by using underlying library [ALib Boxing](http://alexworx.github.io/ALox-Logging-Library/cpp_ref/namespaceaworx_1_1lib_1_1boxing.html) which allows to pass 'anything' as a parameter to C++ functions and methods.
82
+
* Accepts **3rd party string types**. This goal is reached by using underlying library [ALib Strings](http://alexworx.github.io/ALox-Logging-Library/cpp_ref/namespaceaworx_1_1lib_1_1strings.html).
77
83
78
84
* and finally: ALox is under **continuous development**. You're invited to contribute!
79
85
86
+
#Alternatives
87
+
The following alternatives to **ALox** may be worth mentioning:
0 commit comments