mirror of
https://github.com/KjellKod/g3log.git
synced 2024-12-12 10:23:50 +01:00
squashed many small commit messages for documentation and matrix/ci improvements
This commit is contained in:
parent
095ed1cdf6
commit
e3d85a58c2
6
.github/workflows/buildAndRunTests.yml
vendored
6
.github/workflows/buildAndRunTests.yml
vendored
@ -1,11 +1,11 @@
|
|||||||
name: ci/action verbose ctest script
|
name: ci/action ctest Ubuntu v3
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
paths-ignore:
|
paths-ignore:
|
||||||
- docs/**
|
- docs/**
|
||||||
- '**.md'
|
- '**.md'
|
||||||
- '**.markdown'
|
- '**.markdown'
|
||||||
|
- '**.yml'
|
||||||
branches: [ master ]
|
branches: [ master ]
|
||||||
pull_request:
|
pull_request:
|
||||||
paths-ignore:
|
paths-ignore:
|
||||||
@ -20,7 +20,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Print env
|
- name: Print env
|
||||||
run: |
|
run: |
|
||||||
|
9
.github/workflows/codeql-analysis.yml
vendored
9
.github/workflows/codeql-analysis.yml
vendored
@ -17,6 +17,7 @@ on:
|
|||||||
- docs/**
|
- docs/**
|
||||||
- '**.md'
|
- '**.md'
|
||||||
- '**.markdown'
|
- '**.markdown'
|
||||||
|
- '**.yml'
|
||||||
branches: [ master ]
|
branches: [ master ]
|
||||||
pull_request:
|
pull_request:
|
||||||
paths-ignore:
|
paths-ignore:
|
||||||
@ -43,11 +44,11 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
# Initializes the CodeQL tools for scanning.
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
uses: github/codeql-action/init@v2
|
uses: github/codeql-action/init@v3
|
||||||
with:
|
with:
|
||||||
languages: ${{ matrix.language }}
|
languages: ${{ matrix.language }}
|
||||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||||
@ -58,7 +59,7 @@ jobs:
|
|||||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||||
# If this step fails, then you should remove it and run the build manually (see below)
|
# If this step fails, then you should remove it and run the build manually (see below)
|
||||||
- name: Autobuild
|
- name: Autobuild
|
||||||
uses: github/codeql-action/autobuild@v2
|
uses: github/codeql-action/autobuild@v3
|
||||||
|
|
||||||
# ℹ️ Command-line programs to run using the OS shell.
|
# ℹ️ Command-line programs to run using the OS shell.
|
||||||
# 📚 https://git.io/JvXDl
|
# 📚 https://git.io/JvXDl
|
||||||
@ -72,4 +73,4 @@ jobs:
|
|||||||
# make release
|
# make release
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
uses: github/codeql-action/analyze@v2
|
uses: github/codeql-action/analyze@v3
|
||||||
|
82
.github/workflows/ctest.yml
vendored
82
.github/workflows/ctest.yml
vendored
@ -1,46 +1,39 @@
|
|||||||
name: ci/action ctest
|
name: matrix (ubuntu, macos, windows) ctes
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
paths-ignore:
|
paths-ignore:
|
||||||
- docs/**
|
- docs/**
|
||||||
- '**.md'
|
- "**.md"
|
||||||
- '**.markdown'
|
- "**.markdown"
|
||||||
branches: [ master ]
|
branches:
|
||||||
|
- master
|
||||||
pull_request:
|
pull_request:
|
||||||
paths-ignore:
|
paths-ignore:
|
||||||
- docs/**
|
- docs/**
|
||||||
- '**.md'
|
- "**.md"
|
||||||
- '**.markdown'
|
- "**.markdown"
|
||||||
branches: [ master ]
|
- '**.yml'
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
env:
|
env:
|
||||||
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
|
|
||||||
BUILD_TYPE: Release
|
BUILD_TYPE: Release
|
||||||
|
|
||||||
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#example-only-cancel-in-progress-jobs-or-runs-for-the-current-workflow
|
|
||||||
# if you have to do a quick fix and the CI is already running your new commit will kill already
|
|
||||||
# going processes before starting new ones
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.workflow }}-${{ github.ref }}
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-latest, macos-latest, windows-latest]
|
os:
|
||||||
|
- ubuntu-latest
|
||||||
|
- macos-latest
|
||||||
|
- windows-latest
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
|
|
||||||
# The CMake configure and build commands are platform agnostic and should work equally
|
|
||||||
# well on Windows or Mac. You can convert this to a matrix build if you need
|
|
||||||
# cross-platform coverage.
|
|
||||||
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
|
|
||||||
#runs-on: ubuntu-latest
|
|
||||||
#runs-on: ${{ matrix.os }}
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
# checkout full depth of history.
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Run Linux Build
|
- name: Run Linux Build
|
||||||
if: matrix.os == 'ubuntu-latest'
|
if: matrix.os == 'ubuntu-latest'
|
||||||
@ -55,36 +48,41 @@ jobs:
|
|||||||
run: echo "Windows Latest" > release_windows
|
run: echo "Windows Latest" > release_windows
|
||||||
|
|
||||||
- name: Create Build Environment
|
- name: Create Build Environment
|
||||||
# Some projects don't allow in-source building, so create a separate build directory
|
|
||||||
# We'll use this as our working directory for all subsequent commands
|
|
||||||
run: cmake -E make_directory ${{github.workspace}}/build
|
run: cmake -E make_directory ${{github.workspace}}/build
|
||||||
|
|
||||||
- name: Configure CMake
|
- name: Configure Linux/OSX CMake
|
||||||
# Use a bash shell so we can use the same syntax for environment variable
|
if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest'
|
||||||
# access regardless of the host operating system
|
|
||||||
shell: bash
|
shell: bash
|
||||||
working-directory: ${{github.workspace}}/build
|
working-directory: ${{github.workspace}}/build
|
||||||
# Note the current convention is to use the -S and -B options here to specify source
|
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE
|
||||||
# and build directories, but this is only available with CMake 3.13 and higher.
|
-DADD_G3LOG_UNIT_TEST=ON
|
||||||
# The CMake binaries on the Github Actions machines are (as of this writing) 3.12
|
|
||||||
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DADD_G3LOG_UNIT_TEST=ON
|
|
||||||
|
|
||||||
- name: Build
|
- name: Configure Windows CMake
|
||||||
|
if: matrix.os == 'windows-latest'
|
||||||
|
shell: cmd
|
||||||
|
working-directory: ${{github.workspace}}/build
|
||||||
|
run: ls && cmake -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DADD_G3LOG_UNIT_TEST=ON ..
|
||||||
|
|
||||||
|
- name: Build Linux/OSx
|
||||||
working-directory: ${{github.workspace}}/build
|
working-directory: ${{github.workspace}}/build
|
||||||
shell: bash
|
shell: bash
|
||||||
# Execute the build. You can specify a specific target with "--target <NAME>"
|
|
||||||
run: cmake --build . --config $BUILD_TYPE
|
run: cmake --build . --config $BUILD_TYPE
|
||||||
|
|
||||||
- name: Test
|
- name: Test
|
||||||
working-directory: ${{github.workspace}}/build
|
working-directory: ${{github.workspace}}/build
|
||||||
shell: bash
|
shell: bash
|
||||||
# Execute tests defined by the CMake configuration.
|
|
||||||
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
|
|
||||||
run: ctest -C $BUILD_TYP
|
run: ctest -C $BUILD_TYP
|
||||||
|
|
||||||
- name: Fatal Exit Example
|
- name: Fatal Exit Example Linux/OSX
|
||||||
working-directory: ${{github.workspace}}/build
|
working-directory: ${{github.workspace}}/build
|
||||||
if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest' || matrix.os == 'windows-latest'
|
if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest'
|
||||||
shell: bash
|
shell: bash
|
||||||
# hacky / crude and effective
|
run: ./g3log-FATAL-sigsegv || true && echo -e
|
||||||
run: ./g3log-FATAL-sigsegv || true && echo -e "\n\n=======================\n\nverifying SIGSEGV existed in stackdump\n\n\n\n" && cat /tmp/g3log*FATAL*.log | grep "SIGSEGV"
|
"\n\nverifying SIGSEGV existed in stackdump\n\n\n\n" && cat /tmp/*3log*FATAL*.log && cat /tmp/g3log*FATAL*.log | grep "SIGSEGV"
|
||||||
|
|
||||||
|
- name: Fatal Exit Example Windows
|
||||||
|
working-directory: ${{github.workspace}}/build
|
||||||
|
if: matrix.os == 'windows-latest'
|
||||||
|
shell: bash
|
||||||
|
run: ./Release/g3log-FATAL-sigsegv.exe || true && echo -e "\n\nverifying SIGSEGV - EXCEPTION_ACCESS_VIOLATION existed in
|
||||||
|
stackdump\n\n\n\n" && cat *3log*FATAL*.log && cat *3log*FATAL*.log | grep "EXCEPTION_ACCESS_VIOLATION"
|
||||||
|
24
.github/workflows/docs.yml
vendored
24
.github/workflows/docs.yml
vendored
@ -1,24 +0,0 @@
|
|||||||
name: Publish docs via GitHub Pages to https://kjellkod.github.io/g3log/
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
- main
|
|
||||||
paths:
|
|
||||||
- "**.md"
|
|
||||||
- "mkdocs.yml"
|
|
||||||
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
deploy:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
- uses: actions/setup-python@v2
|
|
||||||
with:
|
|
||||||
python-version: 3.x
|
|
||||||
- run: pip install mkdocs-material
|
|
||||||
- name: Build site
|
|
||||||
run: mkdocs build
|
|
||||||
- name: Deploy
|
|
||||||
run: mkdocs gh-deploy --force
|
|
31
.github/workflows/documentation.yml
vendored
Normal file
31
.github/workflows/documentation.yml
vendored
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
# Locally you can try this out also with `mkdocs serve`
|
||||||
|
# Remember if doing changes that github pages, need to deploy branch gh_pages
|
||||||
|
# which points to root.
|
||||||
|
name: Dockumentation Publish v2
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
jobs:
|
||||||
|
deploy:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Configure Git Credentials
|
||||||
|
run: |
|
||||||
|
git config user.name github-actions[bot]
|
||||||
|
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
|
||||||
|
- uses: actions/setup-python@v5
|
||||||
|
with:
|
||||||
|
python-version: 3.x
|
||||||
|
- run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
|
||||||
|
- uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
key: mkdocs-material-${{ env.cache_id }}
|
||||||
|
path: .cache
|
||||||
|
restore-keys: |
|
||||||
|
mkdocs-material-
|
||||||
|
- run: pip install mkdocs-material
|
||||||
|
- run: mkdocs gh-deploy --force
|
@ -1,13 +1,13 @@
|
|||||||
# New Code:
|
# New Code
|
||||||
1. Please support all changed functionality with unit testing. A TDD approach usually leaves a cleaner end result than writing test afterwards
|
1. Please support all changed functionality with unit testing. A TDD approach usually leaves a cleaner end result than writing test afterwards
|
||||||
|
|
||||||
|
|
||||||
# Issues:
|
# Issues
|
||||||
1. Please explain your environment in the ticket. Frequently initialization issues due to not following best practices or the documentation are the causes.
|
1. Please explain your environment in the ticket. Frequently initialization issues due to not following best practices or the documentation are the causes.
|
||||||
Check the documentation and search previous issues before opening up a new one.
|
Check the documentation and search previous issues before opening up a new one.
|
||||||
1. Don't be afraid of adding additional contexst of an old issue in case you think
|
1. Don't be afraid of adding additional contexst of an old issue in case you think
|
||||||
this will improve things for the community going forward.
|
this will improve things for the community going forward.
|
||||||
|
|
||||||
|
|
||||||
# Community Driven:
|
# Community Driven
|
||||||
G3log is community driven. Be respectful. G3log is developed and maintained without financial support, being helpful and polite will move your request and input along faster.
|
G3log is community driven. Be respectful. G3log is developed and maintained without financial support, being helpful and polite will move your request and input along faster.
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
|
|
||||||
# Welcome to g3log
|
# Welcome to g3log
|
||||||
### Use [kjellkod.github.io/g3log/](https://kjellkod.github.io/g3log/) for best reading / searching / navigating of g3log's documentation.
|
### Use [kjellkod.github.io/g3log/](https://kjellkod.github.io/g3log/) for best reading / searching / navigating of g3log's documentation
|
||||||
|
|
||||||
G3log is an asynchronous logger with three main features:
|
G3log is an asynchronous logger with three main features:
|
||||||
1. Intuitive `LOG(...)` API
|
1. Intuitive `LOG(...)` API
|
||||||
@ -13,7 +13,7 @@ G3log is an asynchronous logger with three main features:
|
|||||||
|
|
||||||
The super quick introduction to g3log can be seen in the steps 1 - 9 below.
|
The super quick introduction to g3log can be seen in the steps 1 - 9 below.
|
||||||
|
|
||||||
For more in-depth information please see the full usage description in [g3log_usage.md](docs/g3log_usage.md).If you want to understand better the internals of g3log, then plase look at the [API.md](docs/API.md) for both high-level and deep-dive insights.
|
For more in-depth information please see the full usage description in [g3log_usage.md](docs/g3log_usage.md). If you want to understand better the internals of g3log, then plase look at the [API.md](docs/API.md) for both high-level and deep-dive insights.
|
||||||
|
|
||||||
|
|
||||||
## Experiment and try-out g3log in Github Codespaces
|
## Experiment and try-out g3log in Github Codespaces
|
||||||
@ -21,14 +21,14 @@ ref: [codespaces.md](docs/codespaces.md)
|
|||||||
|
|
||||||
|
|
||||||
## 1. Easy usage in files
|
## 1. Easy usage in files
|
||||||
Avoid deep dependency injection complexity and instead get access to the logger as easy as
|
Avoid deep dependency injection complexity and instead get access to the logger as easy as:
|
||||||
```
|
```
|
||||||
#include <g3log/g3log.hpp>
|
#include <g3log/g3log.hpp>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
## 2. Access to streaming and print_f log call syntax
|
## 2. Access to streaming and print_f log call syntax
|
||||||
Both streaming syntax `LOG` and print_f `LOGF` syntax are available.
|
Both streaming syntax `LOG` and print_f `LOGF` syntax are available:
|
||||||
|
|
||||||
```
|
```
|
||||||
LOGF(INFO, "Hi log %d", 123);
|
LOGF(INFO, "Hi log %d", 123);
|
||||||
|
@ -1 +0,0 @@
|
|||||||
theme: jekyll-theme-cayman
|
|
@ -1,7 +1,7 @@
|
|||||||
[introduction](index.md) | [detailed information](g3log_usage.md) | [Configure & Build](building.md) | [**API description**](API.md) | [Custom log formatting](API_custom_formatting.md)
|
[introduction](index.md) | [detailed information](g3log_usage.md) | [Configure & Build](building.md) | [**API description**](API.md) | [Custom log formatting](API_custom_formatting.md)
|
||||||
|
|
||||||
# High Level Description of g3log
|
# High Level Description of g3log
|
||||||
The `g3log` logger is an asynchronous, crash-safe logging library designed for C++ applications. It allows for logging messages to various sinks without blocking the main application thread. Below is a high-level overview of how the `g3log` logger works:
|
The `g3log` logger is an asynchronous, crash-safe logging library designed for C++ applications. It allows for logging messages to various sinks without blocking the main application thread. Below is a high-level overview of how the `g3log` logger works.
|
||||||
|
|
||||||
## Asynchronous Logging
|
## Asynchronous Logging
|
||||||
The logger operates on a separate thread, ensuring that the main application thread is not blocked by I/O operations when logging messages. This is achieved by using a background worker ([`LogWorker`](../src/g3log/logworker.hpp)) that queues log messages and processes them asynchronously.
|
The logger operates on a separate thread, ensuring that the main application thread is not blocked by I/O operations when logging messages. This is achieved by using a background worker ([`LogWorker`](../src/g3log/logworker.hpp)) that queues log messages and processes them asynchronously.
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
G3log is an asynchronous logger with three main features:
|
G3log is an asynchronous logger with three main features:
|
||||||
1. Intuitive `LOG(...)` API
|
1. Intuitive `LOG(...)` API
|
||||||
2. `Design-by-contract` `CHECK(...)` functionality
|
2. `Design-by-contract` `CHECK(...)` functionality
|
||||||
3. Fatal crash handling for graceful shutdown of the logged process without loosing any log details up to the point of the crash.
|
3. Fatal crash handling for graceful shutdown of the logged process without loosing any log details up to the point of the crash
|
||||||
|
|
||||||
The super quick introduction to g3log can be seen in the steps 1 - 9 below.
|
The super quick introduction to g3log can be seen in the steps 1 - 9 below.
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ namespace example_fatal {
|
|||||||
LOGF(G3LOG_DEBUG, "ILLEGAL PRINTF_SYNTAX EXAMPLE. WILL GENERATE compiler warning.\n\nbadly formatted message:[Printf-type %s is the number 1 for many %s]", logging.c_str());
|
LOGF(G3LOG_DEBUG, "ILLEGAL PRINTF_SYNTAX EXAMPLE. WILL GENERATE compiler warning.\n\nbadly formatted message:[Printf-type %s is the number 1 for many %s]", logging.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
// The function above 'tryToKillWithIllegalPrintout' IS system / compiler dependent. Older compilers sometimes did NOT generate a SIGSEGV
|
// The function above 'tryToKillWithIllegalPrintout' IS system / compiler dependent. Older compilers sometimes did NOT generate a segmentation
|
||||||
// fault as expected by the illegal printf-format usage. just in case we exit by zero division"
|
// fault as expected by the illegal printf-format usage. just in case we exit by zero division"
|
||||||
void killByZeroDivision(int value) {
|
void killByZeroDivision(int value) {
|
||||||
int zero = 0; // trying to fool the compiler to automatically warn
|
int zero = 0; // trying to fool the compiler to automatically warn
|
||||||
@ -45,7 +45,7 @@ namespace example_fatal {
|
|||||||
|
|
||||||
void tryToKillWithAccessingIllegalPointer(std::unique_ptr<std::string> badStringPtr) {
|
void tryToKillWithAccessingIllegalPointer(std::unique_ptr<std::string> badStringPtr) {
|
||||||
auto badPtr = std::move(badStringPtr);
|
auto badPtr = std::move(badStringPtr);
|
||||||
LOG(INFO) << "Function calls through a nullptr object will trigger SIGSEGV";
|
LOG(INFO) << "Function calls through a nullptr object will trigger segmentation fault";
|
||||||
badStringPtr->append("crashing");
|
badStringPtr->append("crashing");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,8 +1,11 @@
|
|||||||
site_name: G3log, an asynchronous "crash-safe" logger
|
site_name: TEST G3log, an asynchronous "crash-safe" logger
|
||||||
site_author: 'Kjell Hedström'
|
site_author: 'Kjell Hedstrom'
|
||||||
docs_dir: docs/
|
site_url: https://kjellkod.github.io/g3log/
|
||||||
theme:
|
theme:
|
||||||
name: material
|
name: material
|
||||||
|
|
||||||
|
docs_dir: docs/
|
||||||
|
|
||||||
nav:
|
nav:
|
||||||
- Introduction to G3log: index.md
|
- Introduction to G3log: index.md
|
||||||
- G3log usage: g3log.md
|
- G3log usage: g3log.md
|
||||||
|
Loading…
Reference in New Issue
Block a user