xref: /aosp_15_r20/external/crosvm/base/src/sys/windows/syslog.rs (revision bb4ee6a4ae7042d18b07a98463b9c8b875e44b39)
1*bb4ee6a4SAndroid Build Coastguard Worker // Copyright 2022 The ChromiumOS Authors
2*bb4ee6a4SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*bb4ee6a4SAndroid Build Coastguard Worker // found in the LICENSE file.
4*bb4ee6a4SAndroid Build Coastguard Worker 
5*bb4ee6a4SAndroid Build Coastguard Worker //! Facilities for sending log message to syslog.
6*bb4ee6a4SAndroid Build Coastguard Worker //!
7*bb4ee6a4SAndroid Build Coastguard Worker //! Every function exported by this module is thread-safe. Each function will silently fail until
8*bb4ee6a4SAndroid Build Coastguard Worker //! `syslog::init()` is called and returns `Ok`.
9*bb4ee6a4SAndroid Build Coastguard Worker //!
10*bb4ee6a4SAndroid Build Coastguard Worker //! # Examples
11*bb4ee6a4SAndroid Build Coastguard Worker //!
12*bb4ee6a4SAndroid Build Coastguard Worker //! ```
13*bb4ee6a4SAndroid Build Coastguard Worker //! use base::{error, self, warn};
14*bb4ee6a4SAndroid Build Coastguard Worker //!
15*bb4ee6a4SAndroid Build Coastguard Worker //! if let Err(e) = base::syslog::init() {
16*bb4ee6a4SAndroid Build Coastguard Worker //!     println!("failed to initiailize syslog: {}", e);
17*bb4ee6a4SAndroid Build Coastguard Worker //!     return;
18*bb4ee6a4SAndroid Build Coastguard Worker //! }
19*bb4ee6a4SAndroid Build Coastguard Worker //! warn!("this is your {} warning", "final");
20*bb4ee6a4SAndroid Build Coastguard Worker //! error!("something went horribly wrong: {}", "out of RAMs");
21*bb4ee6a4SAndroid Build Coastguard Worker //! ```
22*bb4ee6a4SAndroid Build Coastguard Worker 
23*bb4ee6a4SAndroid Build Coastguard Worker use crate::syslog::Error;
24*bb4ee6a4SAndroid Build Coastguard Worker use crate::syslog::Facility;
25*bb4ee6a4SAndroid Build Coastguard Worker use crate::syslog::Log;
26*bb4ee6a4SAndroid Build Coastguard Worker use crate::syslog::Syslog;
27*bb4ee6a4SAndroid Build Coastguard Worker use crate::RawDescriptor;
28*bb4ee6a4SAndroid Build Coastguard Worker 
29*bb4ee6a4SAndroid Build Coastguard Worker // SAFETY:
30*bb4ee6a4SAndroid Build Coastguard Worker // On windows RawDescriptor is !Sync + !Send, but also on windows we don't do anything with them
31*bb4ee6a4SAndroid Build Coastguard Worker unsafe impl Sync for crate::syslog::State {}
32*bb4ee6a4SAndroid Build Coastguard Worker // SAFETY: See comments for impl Sync
33*bb4ee6a4SAndroid Build Coastguard Worker unsafe impl Send for crate::syslog::State {}
34*bb4ee6a4SAndroid Build Coastguard Worker 
35*bb4ee6a4SAndroid Build Coastguard Worker pub struct PlatformSyslog {}
36*bb4ee6a4SAndroid Build Coastguard Worker 
37*bb4ee6a4SAndroid Build Coastguard Worker impl Syslog for PlatformSyslog {
new( _proc_name: String, _facility: Facility, ) -> Result<(Option<Box<dyn Log + Send>>, Option<RawDescriptor>), Error>38*bb4ee6a4SAndroid Build Coastguard Worker     fn new(
39*bb4ee6a4SAndroid Build Coastguard Worker         _proc_name: String,
40*bb4ee6a4SAndroid Build Coastguard Worker         _facility: Facility,
41*bb4ee6a4SAndroid Build Coastguard Worker     ) -> Result<(Option<Box<dyn Log + Send>>, Option<RawDescriptor>), Error> {
42*bb4ee6a4SAndroid Build Coastguard Worker         Ok((None, None))
43*bb4ee6a4SAndroid Build Coastguard Worker     }
44*bb4ee6a4SAndroid Build Coastguard Worker }
45