mirror of
https://github.com/YGGverse/nexy.git
synced 2026-03-31 17:25:27 +00:00
reorganize optional access log member
This commit is contained in:
parent
23c9c1b96e
commit
ddcb1b5744
3 changed files with 31 additions and 32 deletions
|
|
@ -56,14 +56,14 @@ impl Connection {
|
|||
true
|
||||
})
|
||||
}) {
|
||||
self.session
|
||||
.access_log
|
||||
.clf(&self.address.client, Some(&q), 0, t);
|
||||
if let Some(ref a) = self.session.access_log {
|
||||
a.clf(&self.address.client, Some(&q), 0, t)
|
||||
}
|
||||
self.shutdown()
|
||||
} else {
|
||||
self.session
|
||||
.access_log
|
||||
.clf(&self.address.client, Some(&q), 1, t);
|
||||
if let Some(ref a) = self.session.access_log {
|
||||
a.clf(&self.address.client, Some(&q), 1, t)
|
||||
}
|
||||
if self.session.is_debug {
|
||||
println!(
|
||||
"[{}] - [{}] connection closed by client.",
|
||||
|
|
@ -87,9 +87,9 @@ impl Connection {
|
|||
self.address.server, self.address.client
|
||||
)
|
||||
};
|
||||
self.session
|
||||
.access_log
|
||||
.clf(&self.address.client, None, 2, t);
|
||||
if let Some(ref a) = self.session.access_log {
|
||||
a.clf(&self.address.client, None, 2, t)
|
||||
}
|
||||
self.shutdown()
|
||||
}
|
||||
Err(e) => {
|
||||
|
|
@ -97,9 +97,9 @@ impl Connection {
|
|||
"[{}] > [{}] handle request error: `{e}`",
|
||||
self.address.server, self.address.client
|
||||
);
|
||||
self.session
|
||||
.access_log
|
||||
.clf(&self.address.client, None, 1, t);
|
||||
if let Some(ref a) = self.session.access_log {
|
||||
a.clf(&self.address.client, None, 1, t)
|
||||
}
|
||||
self.shutdown()
|
||||
}
|
||||
},
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ use {access_log::AccessLog, public::Public, request::Request, template::Template
|
|||
|
||||
/// Shared, multi-thread features for the current server session
|
||||
pub struct Session {
|
||||
pub access_log: AccessLog,
|
||||
pub access_log: Option<AccessLog>,
|
||||
pub public: Public,
|
||||
pub request: Option<Request>,
|
||||
pub template: Template,
|
||||
|
|
|
|||
|
|
@ -5,33 +5,32 @@
|
|||
use std::{fs::File, io::Write, net::SocketAddr, sync::RwLock};
|
||||
|
||||
/// Writes log as
|
||||
pub struct AccessLog(Option<RwLock<File>>);
|
||||
pub struct AccessLog(RwLock<File>);
|
||||
|
||||
impl AccessLog {
|
||||
pub fn init(config: &crate::config::Config) -> anyhow::Result<Self> {
|
||||
Ok(Self(match config.access_log {
|
||||
Some(ref p) => Some(RwLock::new(File::create(p)?)),
|
||||
pub fn init(config: &crate::config::Config) -> anyhow::Result<Option<Self>> {
|
||||
Ok(match config.access_log {
|
||||
Some(ref p) => Some(Self(RwLock::new(File::create(p)?))),
|
||||
None => None,
|
||||
}))
|
||||
})
|
||||
}
|
||||
/// [CLF](https://en.wikipedia.org/wiki/Common_Log_Format)
|
||||
///
|
||||
/// * the code value (`u8`) is relative, use 1|0 for failure / success
|
||||
pub fn clf(&self, client: &SocketAddr, query: Option<&str>, code: u8, size: usize) {
|
||||
if let Some(ref f) = self.0 {
|
||||
f.write()
|
||||
.unwrap()
|
||||
.write_all(
|
||||
format!(
|
||||
"{} {} - [{}] \"GET {}\" {code} {size}\n",
|
||||
client.ip(),
|
||||
client.port(),
|
||||
chrono::Local::now().format("%d/%b/%Y:%H:%M:%S %z"),
|
||||
query.unwrap_or_default(),
|
||||
)
|
||||
.as_bytes(),
|
||||
self.0
|
||||
.write()
|
||||
.unwrap()
|
||||
.write_all(
|
||||
format!(
|
||||
"{} {} - [{}] \"GET {}\" {code} {size}\n",
|
||||
client.ip(),
|
||||
client.port(),
|
||||
chrono::Local::now().format("%d/%b/%Y:%H:%M:%S %z"),
|
||||
query.unwrap_or_default(),
|
||||
)
|
||||
.unwrap()
|
||||
}
|
||||
.as_bytes(),
|
||||
)
|
||||
.unwrap()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue