Skip to content

Commit f5bf372

Browse files
committed
Log backend for rust forontend
This is logger impl that bridges rust log frontend with C++ mw_log implementation Signed-off-by: Pawel Rutka <pawel.rutka.ext@qorix.ai>
1 parent 8633c3b commit f5bf372

9 files changed

Lines changed: 568 additions & 21 deletions

File tree

.bazelrc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,8 @@ test --test_output=errors
77

88
common --registry=https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/
99
common --registry=https://bcr.bazel.build
10+
11+
# magic logging configuration
12+
common --@score-baselibs//score/mw/log/detail/flags:KUse_Stub_Implementation_Only=False
13+
common --@score-baselibs//score/mw/log/flags:KRemote_Logging=False
14+
common --@score-baselibs//score/json:base_library=nlohmann

BUILD

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,11 @@
1010
#
1111
# SPDX-License-Identifier: Apache-2.0
1212
# *******************************************************************************
13-
13+
load("@score_cr_checker//:cr_checker.bzl", "copyright_checker")
14+
load("@score_dash_license_checker//:dash.bzl", "dash_license_checker")
1415
load("@score_docs_as_code//:docs.bzl", "docs")
15-
load("@score_tooling//:defs.bzl", "copyright_checker", "dash_license_checker", "setup_starpls", "use_format_targets")
16+
load("@score_format_checker//:macros.bzl", "use_format_targets")
17+
load("@score_starpls_lsp//:starpls.bzl", "setup_starpls")
1618
load("//:project_config.bzl", "PROJECT_CONFIG")
1719

1820
setup_starpls(
@@ -28,8 +30,8 @@ copyright_checker(
2830
"//:BUILD",
2931
"//:MODULE.bazel",
3032
],
31-
config = "@score_tooling//cr_checker/resources:config",
32-
template = "@score_tooling//cr_checker/resources:templates",
33+
config = "@score_cr_checker//resources:config",
34+
template = "@score_cr_checker//resources:templates",
3335
visibility = ["//visibility:public"],
3436
)
3537

MODULE.bazel

Lines changed: 34 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
# SPDX-License-Identifier: Apache-2.0
1212
# *******************************************************************************
1313
module(
14-
name = "cpp_rust_template_repository",
15-
version = "1.0",
14+
name = "score-mw-log",
15+
version = "0.1",
1616
)
1717

1818
bazel_dep(name = "rules_python", version = "1.4.1")
@@ -27,31 +27,48 @@ python.toolchain(
2727
use_repo(python)
2828

2929
# Add GoogleTest dependency
30-
bazel_dep(name = "googletest", version = "1.17.0")
30+
bazel_dep(name = "googletest", version = "1.15.0")
3131

3232
# Rust rules for Bazel
33-
bazel_dep(name = "rules_rust", version = "0.63.0")
33+
bazel_dep(name = "rules_rust", version = "0.56.0")
34+
35+
# Checker rule for CopyRight checks/fixs
36+
bazel_dep(name = "score_cr_checker", version = "0.3.1")
37+
bazel_dep(name = "score_python_basics", version = "0.3.4")
38+
bazel_dep(name = "score_starpls_lsp", version = "0.1.0")
3439

3540
# C/C++ rules for Bazel
36-
bazel_dep(name = "rules_cc", version = "0.2.1")
41+
bazel_dep(name = "rules_cc", version = "0.1.1")
3742

3843
# LLVM Toolchains Rules - host configuration
39-
bazel_dep(name = "toolchains_llvm", version = "1.4.0")
44+
bazel_dep(name = "toolchains_llvm", version = "1.3.0")
4045

41-
llvm = use_extension("@toolchains_llvm//toolchain/extensions:llvm.bzl", "llvm")
42-
llvm.toolchain(
43-
cxx_standard = {"": "c++17"},
44-
llvm_version = "19.1.0",
46+
# Configure and register the toolchain.
47+
bazel_dep(name = "score_toolchains_gcc", version = "0.4", dev_dependency=True)
48+
gcc = use_extension("@score_toolchains_gcc//extentions:gcc.bzl", "gcc", dev_dependency=True)
49+
gcc.toolchain(
50+
url = "https://github.com/eclipse-score/toolchains_gcc_packages/releases/download/0.0.1/x86_64-unknown-linux-gnu_gcc12.tar.gz",
51+
sha256 = "457f5f20f57528033cb840d708b507050d711ae93e009388847e113b11bf3600",
52+
strip_prefix = "x86_64-unknown-linux-gnu",
4553
)
46-
use_repo(llvm, "llvm_toolchain")
47-
use_repo(llvm, "llvm_toolchain_llvm")
4854

49-
register_toolchains("@llvm_toolchain//:all")
55+
use_repo(gcc, "gcc_toolchain", "gcc_toolchain_gcc")
56+
57+
# Dash license checker
58+
bazel_dep(name = "score_dash_license_checker", version = "0.1.2")
5059

51-
# tooling
52-
bazel_dep(name = "score_tooling", version = "1.0.1")
53-
bazel_dep(name = "aspect_rules_lint", version = "1.5.3")
60+
# Format checker
61+
bazel_dep(name = "score_format_checker", version = "0.1.1")
62+
bazel_dep(name = "aspect_rules_lint", version = "1.4.4")
5463
bazel_dep(name = "buildifier_prebuilt", version = "8.2.0.2")
5564

5665
#docs-as-code
57-
bazel_dep(name = "score_docs_as_code", version = "1.1.0")
66+
bazel_dep(name = "score_docs_as_code", version = "1.0.1")
67+
68+
# Code deps
69+
bazel_dep(name = "score-baselibs", version = "0.1.0")
70+
git_override(
71+
module_name = "score-baselibs",
72+
commit = "ae050e3cc556572830e1ec02ffbcbbd03f26df13", # or use "tag" or "branch"
73+
remote = "https://github.com/eclipse-score/baselibs.git",
74+
)

src/mw_log_subscriber/BUILD

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# *******************************************************************************
2+
# Copyright (c) 2025 Contributors to the Eclipse Foundation
3+
#
4+
# See the NOTICE file(s) distributed with this work for additional
5+
# information regarding copyright ownership.
6+
#
7+
# This program and the accompanying materials are made available under the
8+
# terms of the Apache License Version 2.0 which is available at
9+
# https://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# SPDX-License-Identifier: Apache-2.0
12+
# *******************************************************************************
13+
14+
load("@rules_rust//cargo:defs.bzl", "cargo_build_script")
15+
load("@rules_rust//rust:defs.bzl", "rust_binary", "rust_library")
16+
17+
cc_library(
18+
name = "libmw_log_ffi",
19+
srcs = ["src/mw_log_ffi.cpp"],
20+
visibility = ["//visibility:public"],
21+
deps = [
22+
"@score-baselibs//score/mw/log",
23+
],
24+
)
25+
26+
rust_library(
27+
name = "mw_log_subscriber",
28+
srcs = glob(["src/**/*.rs"]),
29+
crate_name = "mw_log_subscriber",
30+
edition = "2021",
31+
visibility = ["//visibility:public"],
32+
deps = [
33+
":libmw_log_ffi",
34+
"@score-baselibs//score/mw/log/rust:mw_log",
35+
],
36+
)
37+
38+
rust_binary(
39+
name = "example",
40+
srcs = ["examples/main.rs"],
41+
data = [
42+
"examples/config/logging.json",
43+
],
44+
edition = "2021",
45+
visibility = ["//visibility:public"],
46+
deps = [
47+
":mw_log_subscriber",
48+
"@score-baselibs//score/mw/log/rust:mw_log",
49+
],
50+
)
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"appId": "JSON",
3+
"appDesc": "JSON example programs",
4+
"logMode" : "kConsole",
5+
"logLevel": "kVerbose",
6+
"logLevelThresholdConsole": "kInfo"
7+
}
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
//
2+
// Copyright (c) 2025 Contributors to the Eclipse Foundation
3+
//
4+
// See the NOTICE file(s) distributed with this work for additional
5+
// information regarding copyright ownership.
6+
//
7+
// This program and the accompanying materials are made available under the
8+
// terms of the Apache License Version 2.0 which is available at
9+
// <https://www.apache.org/licenses/LICENSE-2.0>
10+
//
11+
// SPDX-License-Identifier: Apache-2.0
12+
//
13+
14+
use std::path::PathBuf;
15+
16+
use mw_log::{debug, error, info, trace, warn};
17+
use mw_log_subscriber::MwLoggerBuilder;
18+
19+
fn main() {
20+
//Setup for example using config file
21+
let path = PathBuf::from(std::env::current_dir().unwrap())
22+
.join(file!())
23+
.parent()
24+
.unwrap()
25+
.join("config")
26+
.join("logging.json");
27+
28+
std::env::set_var("MW_LOG_CONFIG_FILE", path.as_os_str());
29+
30+
// Just initialize and set as default logger
31+
MwLoggerBuilder::new().set_as_default_logger::<false, true, false>();
32+
33+
trace!("This is a trace log");
34+
debug!("This is a debug log");
35+
error!("This is an error log");
36+
info!("This is an info log");
37+
warn!("This is a warn log");
38+
39+
error!(
40+
"This is an log that will be trimmed: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
41+
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
42+
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
43+
ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
44+
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
45+
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
46+
ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg
47+
END MARKER NOT VISIBLE"
48+
);
49+
50+
error!(
51+
"This is an log that will be trimmed {} {} {} {} {} {} {}. END MARKER NOT VISIBLE",
52+
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
53+
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
54+
"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
55+
"ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
56+
"eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
57+
"fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
58+
"ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg"
59+
);
60+
61+
// Using logger instance with context
62+
let logger = MwLoggerBuilder::new()
63+
.with_context("ALFA")
64+
.build::<false, true, false>();
65+
66+
trace!(
67+
logger : logger,
68+
"This is a trace log"
69+
);
70+
debug!(logger : logger, "This is a debug log");
71+
error!(logger : logger, "This is an error log");
72+
info!(logger : logger, "This is an info log");
73+
warn!(logger : logger, "This is a warn log");
74+
}

0 commit comments

Comments
 (0)