index : static-web-server.git

ascending towards madness

author Jose Quintana <joseluisquintana20@gmail.com> 2023-08-02 23:18:45.0 +00:00:00
committer Jose Quintana <joseluisquintana20@gmail.com> 2023-08-02 23:18:45.0 +00:00:00
commit
8cc073f4be90f40a33be11bf14ab4e54e2d707b9 [patch]
tree
955d227e21d55554c3a5d24175858114e79cf7bf
parent
e9d33ca38d1e1f04858bdafe9ba0ac2d2fe2f69e
download
8cc073f4be90f40a33be11bf14ab4e54e2d707b9.tar.gz

fix: unable to initialize logger in windows

fixes #248 regression

Diff

 src/bin/server.rs   | 10 +++++-----
 src/logger.rs       |  4 +++-
 src/server.rs       |  5 +----
 src/settings/mod.rs |  8 +++++---
 src/winservice.rs   |  5 +++--
 5 files changed, 17 insertions(+), 15 deletions(-)

diff --git a/src/bin/server.rs b/src/bin/server.rs
index 72792e4..367ad0f 100644
--- a/src/bin/server.rs
+++ b/src/bin/server.rs
@@ -12,16 +12,16 @@
#[global_allocator]
static GLOBAL: tikv_jemallocator::Jemalloc = tikv_jemallocator::Jemalloc;

use static_web_server::Result;
use static_web_server::{Result, Settings};

fn main() -> Result {
    let opts = Settings::get(true)?;

    #[cfg(windows)]
    {
        use static_web_server::settings::{Commands, Settings};
        use static_web_server::settings::Commands;
        use static_web_server::winservice;

        let opts = Settings::get()?;

        if let Some(commands) = opts.general.commands {
            match commands {
                Commands::Install {} => {
@@ -37,7 +37,7 @@ fn main() -> Result {
    }

    // Run the server by default
    static_web_server::Server::new()?.run_standalone()?;
    static_web_server::Server::new(opts)?.run_standalone()?;

    Ok(())
}
diff --git a/src/logger.rs b/src/logger.rs
index 9a707e8..6595ec1 100644
--- a/src/logger.rs
+++ b/src/logger.rs
@@ -22,7 +22,9 @@ pub fn init(log_level: &str) -> Result {

/// Initialize logging builder with its levels.
fn configure(level: &str) -> Result {
    let level = level.parse::<Level>()?;
    let level = level
        .parse::<Level>()
        .with_context(|| "failed to parse log level")?;

    #[cfg(not(windows))]
    let enable_ansi = true;
diff --git a/src/server.rs b/src/server.rs
index 84cf310..f4632f3 100644
--- a/src/server.rs
+++ b/src/server.rs
@@ -36,10 +36,7 @@ pub struct Server {

impl Server {
    /// Create new multi-thread server instance.
    pub fn new() -> Result<Server> {
        // Get server config
        let opts = Settings::get()?;

    pub fn new(opts: Settings) -> Result<Server> {
        // Configure number of worker threads
        let cpus = num_cpus::get();
        let worker_threads = match opts.general.threads_multiplier {
diff --git a/src/settings/mod.rs b/src/settings/mod.rs
index a1ba127..470e0b5 100644
--- a/src/settings/mod.rs
+++ b/src/settings/mod.rs
@@ -75,7 +75,7 @@ impl Settings {
    /// Reads CLI/Env and config file options returning the server settings.
    /// It also takes care to initialize the logging system with its level
    /// once the `general` settings are determined.
    pub fn get() -> Result<Settings> {
    pub fn get(log_init: bool) -> Result<Settings> {
        let opts = General::parse();

        // Define the general CLI/file options
@@ -283,7 +283,9 @@ impl Settings {
            }

            // Logging system initialization
            logger::init(log_level.as_str())?;
            if log_init {
                logger::init(log_level.as_str())?;
            }
            tracing::debug!("toml configuration file read successfully");

            // File-based "advanced" options
@@ -407,7 +409,7 @@ impl Settings {
                    redirects: redirects_entries,
                });
            }
        } else {
        } else if log_init {
            // Logging system initialization
            logger::init(log_level.as_str())?;
        }
diff --git a/src/winservice.rs b/src/winservice.rs
index 063ba0d..b6bc5e7 100644
--- a/src/winservice.rs
+++ b/src/winservice.rs
@@ -72,7 +72,8 @@ fn set_service_state(
}

fn run_service() -> Result {
    let _ = Settings::get()?;
    // Log is already initialized so there is no need to do it again.
    let opts = Settings::get(false)?;

    tracing::info!("windows service: starting service setup");

@@ -132,7 +133,7 @@ fn run_service() -> Result {
    };

    // Starting web server
    match Server::new() {
    match Server::new(opts) {
        Ok(server) => {
            if let Err(err) = server.run_as_service(Some(shutdown_rx), stop_handler) {
                tracing::error!(