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:
|
||||
push:
|
||||
paths-ignore:
|
||||
- docs/**
|
||||
- '**.md'
|
||||
- '**.markdown'
|
||||
- '**.yml'
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
@ -20,7 +20,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Print env
|
||||
run: |
|
||||
|
9
.github/workflows/codeql-analysis.yml
vendored
9
.github/workflows/codeql-analysis.yml
vendored
@ -17,6 +17,7 @@ on:
|
||||
- docs/**
|
||||
- '**.md'
|
||||
- '**.markdown'
|
||||
- '**.yml'
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
@ -43,11 +44,11 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v3
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v2
|
||||
uses: github/codeql-action/init@v3
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
# 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).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v2
|
||||
uses: github/codeql-action/autobuild@v3
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 https://git.io/JvXDl
|
||||
@ -72,4 +73,4 @@ jobs:
|
||||
# make release
|
||||
|
||||
- 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:
|
||||
push:
|
||||
paths-ignore:
|
||||
- docs/**
|
||||
- '**.md'
|
||||
- '**.markdown'
|
||||
branches: [ master ]
|
||||
- "**.md"
|
||||
- "**.markdown"
|
||||
branches:
|
||||
- master
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- docs/**
|
||||
- '**.md'
|
||||
- '**.markdown'
|
||||
branches: [ master ]
|
||||
|
||||
- "**.md"
|
||||
- "**.markdown"
|
||||
- '**.yml'
|
||||
branches:
|
||||
- master
|
||||
env:
|
||||
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
|
||||
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:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
build:
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-latest, macos-latest, windows-latest]
|
||||
os:
|
||||
- ubuntu-latest
|
||||
- macos-latest
|
||||
- windows-latest
|
||||
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:
|
||||
- uses: actions/checkout@v3
|
||||
# checkout full depth of history.
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Run Linux Build
|
||||
if: matrix.os == 'ubuntu-latest'
|
||||
@ -55,36 +48,41 @@ jobs:
|
||||
run: echo "Windows Latest" > release_windows
|
||||
|
||||
- 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
|
||||
|
||||
- name: Configure CMake
|
||||
# Use a bash shell so we can use the same syntax for environment variable
|
||||
# access regardless of the host operating system
|
||||
- name: Configure Linux/OSX CMake
|
||||
if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest'
|
||||
shell: bash
|
||||
working-directory: ${{github.workspace}}/build
|
||||
# Note the current convention is to use the -S and -B options here to specify source
|
||||
# and build directories, but this is only available with CMake 3.13 and higher.
|
||||
# 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
|
||||
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
|
||||
shell: bash
|
||||
# Execute the build. You can specify a specific target with "--target <NAME>"
|
||||
run: cmake --build . --config $BUILD_TYPE
|
||||
|
||||
- name: Test
|
||||
working-directory: ${{github.workspace}}/build
|
||||
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
|
||||
|
||||
- name: Fatal Exit Example
|
||||
- name: Fatal Exit Example Linux/OSX
|
||||
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
|
||||
# hacky / crude and effective
|
||||
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"
|
||||
run: ./g3log-FATAL-sigsegv || true && echo -e
|
||||
"\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
|
||||
|
||||
|
||||
# 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.
|
||||
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
|
||||
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.
|
@ -4,7 +4,7 @@
|
||||
|
||||
|
||||
# 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:
|
||||
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.
|
||||
|
||||
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
|
||||
@ -21,14 +21,14 @@ ref: [codespaces.md](docs/codespaces.md)
|
||||
|
||||
|
||||
## 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>
|
||||
```
|
||||
|
||||
|
||||
## 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);
|
||||
|
@ -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)
|
||||
|
||||
# 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
|
||||
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:
|
||||
1. Intuitive `LOG(...)` API
|
||||
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.
|
||||
|
||||
|
@ -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());
|
||||
}
|
||||
|
||||
// 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"
|
||||
void killByZeroDivision(int value) {
|
||||
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) {
|
||||
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");
|
||||
}
|
||||
|
||||
|
@ -1,8 +1,11 @@
|
||||
site_name: G3log, an asynchronous "crash-safe" logger
|
||||
site_author: 'Kjell Hedström'
|
||||
docs_dir: docs/
|
||||
site_name: TEST G3log, an asynchronous "crash-safe" logger
|
||||
site_author: 'Kjell Hedstrom'
|
||||
site_url: https://kjellkod.github.io/g3log/
|
||||
theme:
|
||||
name: material
|
||||
|
||||
docs_dir: docs/
|
||||
|
||||
nav:
|
||||
- Introduction to G3log: index.md
|
||||
- G3log usage: g3log.md
|
||||
|
Loading…
Reference in New Issue
Block a user