From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id BC49192FFA for ; Thu, 16 Feb 2023 15:22:54 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 940B62A3BD for ; Thu, 16 Feb 2023 15:22:24 +0100 (CET) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [94.136.29.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Thu, 16 Feb 2023 15:22:23 +0100 (CET) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id B710047597 for ; Thu, 16 Feb 2023 15:22:23 +0100 (CET) From: Lukas Wagner To: pve-devel@lists.proxmox.com Date: Thu, 16 Feb 2023 15:22:20 +0100 Message-Id: <20230216142220.886551-1-l.wagner@proxmox.com> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL -0.164 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [logging.rs, template.pm, mod.rs, fixme.rs] Subject: [pve-devel] [PATCH proxmox-perl-rs] initialize logging when shared library is loaded X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Feb 2023 14:22:54 -0000 Before, all calls to the log::* macros did not produce any output. This commit sets up logging by hooking into module loading/bootstraping process to call a single exported function `setup_logging`. The function initializes env_logger with its default settings. The benefit of this approach is that no changes of client-side Perl code is required. Signed-off-by: Lukas Wagner --- Not sure if this is the best/cleanest approach for this, seems to work just fine though. Proxmox/Lib/template.pm | 7 +++++++ common/src/logging.rs | 8 ++++++++ common/src/mod.rs | 1 + pmg-rs/Cargo.toml | 1 + pve-rs/Cargo.toml | 1 + 5 files changed, 18 insertions(+) create mode 100644 common/src/logging.rs diff --git a/Proxmox/Lib/template.pm b/Proxmox/Lib/template.pm index d7fbbf3..4942a64 100644 --- a/Proxmox/Lib/template.pm +++ b/Proxmox/Lib/template.pm @@ -47,6 +47,13 @@ sub load : prototype($) { $data->{$mod_name} = $lib; $data->{-current} //= $lib; $data->{-package} //= $pkg; + + # Lookup up the 'setup_logger' function and call it. + # This sets up 'env_logger' so that 'log::*' can be used from Rust code. + my $sym = DynaLoader::dl_find_symbol($lib, "setup_logging"); + die "failed to locate 'setup_logging'\n" if !defined $sym; + my $setup_logging = DynaLoader::dl_install_xsub("setup_logging", $sym, "src/FIXME.rs"); + $setup_logging->(); } sub bootstrap { diff --git a/common/src/logging.rs b/common/src/logging.rs new file mode 100644 index 0000000..772b806 --- /dev/null +++ b/common/src/logging.rs @@ -0,0 +1,8 @@ + +#[no_mangle] +/// Should be called exactly once +pub extern "C" fn setup_logging() { + if let Err(e) = env_logger::try_init() { + eprintln!("could not set up env_logger: {e}") + } +} diff --git a/common/src/mod.rs b/common/src/mod.rs index b8b843e..749f494 100644 --- a/common/src/mod.rs +++ b/common/src/mod.rs @@ -1,3 +1,4 @@ pub mod apt; +pub mod logging; mod calendar_event; mod subscription; diff --git a/pmg-rs/Cargo.toml b/pmg-rs/Cargo.toml index 6800f40..2d9ea29 100644 --- a/pmg-rs/Cargo.toml +++ b/pmg-rs/Cargo.toml @@ -20,6 +20,7 @@ crate-type = [ "cdylib" ] [dependencies] anyhow = "1.0" +env_logger = "0.9" hex = "0.4" http = "0.2.7" libc = "0.2" diff --git a/pve-rs/Cargo.toml b/pve-rs/Cargo.toml index aa32aeb..6c921c4 100644 --- a/pve-rs/Cargo.toml +++ b/pve-rs/Cargo.toml @@ -18,6 +18,7 @@ crate-type = [ "cdylib" ] anyhow = "1.0" base32 = "0.4" base64 = "0.13" +env_logger = "0.9" hex = "0.4" http = "0.2.7" libc = "0.2" -- 2.30.2