From dca2789086a94384eca687f40fe9300f654f54ba Mon Sep 17 00:00:00 2001 From: Serafim Date: Thu, 12 Dec 2024 23:29:58 +0300 Subject: [PATCH] log --- log/log | Bin 26168 -> 25096 bytes log/log.cpp | 75 +++++++++++++------ log_data/2024-12-12.log | 157 ++++++++++++++++++++++++++++++++++++++-- server1/server | Bin 55160 -> 60936 bytes server1/server.cpp | 55 +++++++------- server2/server.cpp | 55 +++++++------- 6 files changed, 262 insertions(+), 80 deletions(-) diff --git a/log/log b/log/log index 07aac05a7847029169e7cbb17dd99972ce55840f..5ada5f884c02e3563394bac293dd495bc28353c3 100755 GIT binary patch delta 6697 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 literal 26168 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 H!Lt7a-l(Io diff --git a/log/log.cpp b/log/log.cpp index 4144e56..adf6fbf 100644 --- a/log/log.cpp +++ b/log/log.cpp @@ -1,33 +1,64 @@ -#include -#include -#include -#include #include -#include #include -#include +#include +#include +#include +#include +#include +#include +#include +#include + +const char* LOG_FIFO_NAME = "/pipe/log"; std::string LOG_DIR = "/log_data"; -void log(std::string msg) { - mkdir(LOG_DIR.c_str(), 0755); - time_t now = time(0); - struct tm tstruct; - tstruct = *localtime(&now); - char filename[12]; - std::strftime(filename, 12, "%Y-%m-%d", &tstruct); - std::ofstream log_file; - log_file.open(LOG_DIR + "/" + filename + ".log", std::ios_base::app); - char timestamp[32]; - std::strftime(timestamp, 32, "%Y/%m/%d %H:%M:%S ", &tstruct); - log_file << timestamp << msg << std::endl; - log_file.close(); +int pipeFd; + +void handle_signal(int sig) { + if (sig == SIGTERM || sig == SIGINT) { + close(pipeFd); + unlink(LOG_FIFO_NAME); + } } int main() { - log("uwu"); - log("owo"); - log("yay"); + signal(SIGINT, handle_signal); + signal(SIGTERM, handle_signal); + mkdir(LOG_DIR.c_str(), 0755); + + // Create or open the named pipe + mkfifo(LOG_FIFO_NAME, 0666); + + // Open the pipe for reading + pipeFd = open(LOG_FIFO_NAME, O_RDONLY); + if (pipeFd == -1) { + std::cout << "Error opening pipe!" << std::endl; + return 1; + } + + // Read log messages from the pipe and write them to the log file + char buffer[256]; + while (true) { + ssize_t bytesRead = read(pipeFd, buffer, sizeof(buffer) - 1); + if (bytesRead > 0) { + buffer[bytesRead] = '\0'; + time_t now = time(0); + struct tm tstruct; + tstruct = *localtime(&now); + char filename[12]; + std::strftime(filename, 12, "%Y-%m-%d", &tstruct); + std::ofstream log_file; + log_file.open(LOG_DIR + "/" + filename + ".log", std::ios_base::app); + char timestamp[32]; + std::strftime(timestamp, 32, "%Y/%m/%d %H:%M:%S ", &tstruct); + log_file << timestamp << buffer << std::endl; + log_file.close(); + } + } + + // Clean up + close(pipeFd); return 0; } \ No newline at end of file diff --git a/log_data/2024-12-12.log b/log_data/2024-12-12.log index c34ba05..0078a10 100644 --- a/log_data/2024-12-12.log +++ b/log_data/2024-12-12.log @@ -1,6 +1,151 @@ -2024/12/12 00:24:34 uwu -2024/12/12 00:24:34 owo -2024/12/12 00:24:34 yay -2024/12/12 00:24:50 uwu -2024/12/12 00:24:50 owo -2024/12/12 00:24:50 yay +2024/12/12 19:56:03 Creating socket... +2024/12/12 19:56:03 Socket created +2024/12/12 19:56:03 Listening for connections... +2024/12/12 19:56:10 New connection accepted +2024/12/12 19:56:10 New thread created for socket 5 +2024/12/12 19:56:12 Got new message from client 5: +2024/12/12 19:56:12 Sent new info to client 5 +2024/12/12 19:56:14 Got new message from client 5: +2024/12/12 19:56:15 Got new message from client 5: +2024/12/12 19:56:16 Got new message from client 5: +2024/12/12 19:56:16 Sent new info to client 5 +2024/12/12 19:56:18 Got new message from client 5: +2024/12/12 19:56:18 Client 5 info is not up to dateSent new info to client 5 +2024/12/12 19:56:19 Got new message from client 5: +2024/12/12 19:56:19 Actual info already on client 5 +2024/12/12 19:56:20 Got new message from client 5: +2024/12/12 19:56:20 Sent new info to client 5 +2024/12/12 19:56:21 Got new message from client 5: +2024/12/12 19:56:21 Sent new info to client 5 +2024/12/12 19:56:22 Got new message from client 5: +2024/12/12 19:56:23 Got new message from client 5: +2024/12/12 19:56:23 Client 5 info is not up to dateSent new info to client 5 +2024/12/12 19:56:24 Got new message from client 5: +2024/12/12 19:56:24 Sent new info to client 5 +2024/12/12 19:56:25 Got new message from client 5: +2024/12/12 19:56:26 Got new message from client 5: +2024/12/12 19:56:26 Client 5 info is not up to date +2024/12/12 19:56:26 Sent new info to client 5 +2024/12/12 19:56:27 Got new message from client 5: +2024/12/12 19:56:27 Sent new info to client 5 +2024/12/12 19:56:28 Got new message from client 5: +2024/12/12 19:56:29 Got new message from client 5: +2024/12/12 19:56:29 Sent new info to client 5 +2024/12/12 19:56:30 Got new message from client 5: +2024/12/12 19:56:31 Got new message from client 5: +2024/12/12 19:56:32 Got new message from client 5: +2024/12/12 19:56:32 Client 5 info is not up to dateSent new info to client 5 +2024/12/12 19:56:33 Got new message from client 5: +2024/12/12 19:56:33 Sent new info to client 5 +2024/12/12 19:56:34 Got new message from client 5: +2024/12/12 19:56:35 Got new message from client 5: +2024/12/12 19:56:35 Sent new info to client 5 +2024/12/12 19:56:36 Got new message from client 5: +2024/12/12 19:56:36 Client 5 info is not up to date +2024/12/12 19:56:36 Sent new info to client 5 +2024/12/12 19:56:37 Got new message from client 5: +2024/12/12 19:56:38 Got new message from client 5: +2024/12/12 19:56:38 Sent new info to client 5 +2024/12/12 19:56:39 Got new message from client 5: +2024/12/12 19:56:39 Client 5 info is not up to date +2024/12/12 19:56:39 Sent new info to client 5 +2024/12/12 19:56:40 Got new message from client 5: +2024/12/12 19:56:40 Actual info already on client 5 +2024/12/12 19:56:40 Connection with client 5 closed +2024/12/12 19:57:04 Creating socket... +2024/12/12 19:57:04 Socket created +2024/12/12 19:57:04 Listening for connections... +2024/12/12 19:57:10 New connection accepted +2024/12/12 19:57:10 New thread created for socket 5 +2024/12/12 19:57:12 Got new message from client 5: +2024/12/12 19:57:12 Client 5 info is not up to date +2024/12/12 19:57:12 Sent new info to client 5 +2024/12/12 19:57:13 Got new message from client 5: +2024/12/12 19:57:13 Sent new info to client 5 +2024/12/12 19:57:14 Got new message from client 5: +2024/12/12 19:57:15 Got new message from client 5: +2024/12/12 19:57:15 Client 5 info is not up to date +2024/12/12 19:57:15 Sent new info to client 5 +2024/12/12 19:57:16 Got new message from client 5: +2024/12/12 19:57:16 Sent new info to client 5 +2024/12/12 19:57:17 Got new message from client 5: +2024/12/12 19:57:18 Got new message from client 5: +2024/12/12 19:57:18 Sent new info to client 5 +2024/12/12 19:57:19 Got new message from client 5: +2024/12/12 19:57:19 Client 5 info is not up to date +2024/12/12 19:57:19 Sent new info to client 5 +2024/12/12 19:57:20 Got new message from client 5: +2024/12/12 19:57:20 Actual info already on client 5 +2024/12/12 19:57:21 Got new message from client 5: +2024/12/12 19:57:21 Sent new info to client 5 +2024/12/12 19:57:22 Got new message from client 5: +2024/12/12 19:57:23 Got new message from client 5: +2024/12/12 19:57:24 Got new message from client 5: +2024/12/12 19:57:25 Got new message from client 5: +2024/12/12 19:57:26 Got new message from client 5: +2024/12/12 19:57:27 Got new message from client 5: +2024/12/12 19:57:27 Client 5 info is not up to dateSent new info to client 5 +2024/12/12 19:57:28 Got new message from client 5: +2024/12/12 19:57:28 Sent new info to client 5 +2024/12/12 19:57:29 Got new message from client 5: +2024/12/12 19:57:29 Actual info already on client 5 +2024/12/12 19:57:30 Got new message from client 5: +2024/12/12 19:57:30 Client 5 info is not up to date +2024/12/12 19:57:30 Sent new info to client 5 +2024/12/12 19:57:31 Got new message from client 5: +2024/12/12 19:57:31 Client 5 info is not up to dateSent new info to client 5 +2024/12/12 19:57:32 Got new message from client 5: +2024/12/12 19:57:33 Got new message from client 5: +2024/12/12 19:57:33 Client 5 info is not up to date +2024/12/12 19:57:33 Sent new info to client 5 +2024/12/12 19:57:34 Got new message from client 5: +2024/12/12 19:57:34 Client 5 info is not up to dateSent new info to client 5 +2024/12/12 19:57:35 Got new message from client 5: +2024/12/12 19:57:36 Got new message from client 5: +2024/12/12 19:57:36 Sent new info to client 5 +2024/12/12 19:57:37 Got new message from client 5: +2024/12/12 19:57:37 Sent new info to client 5 +2024/12/12 19:57:38 Got new message from client 5: +2024/12/12 19:57:38 Actual info already on client 5 +2024/12/12 19:57:39 Got new message from client 5: +2024/12/12 19:57:39 Sent new info to client 5 +2024/12/12 19:57:40 Got new message from client 5: +2024/12/12 19:57:40 Sent new info to client 5 +2024/12/12 19:57:41 Got new message from client 5: +2024/12/12 19:57:41 Actual info already on client 5 +2024/12/12 19:57:42 Got new message from client 5: +2024/12/12 19:57:42 Sent new info to client 5 +2024/12/12 19:57:42 Connection with client 5 closed +2024/12/12 20:00:42 Socket created +2024/12/12 20:00:49 New thread created for socket 5 +2024/12/12 20:00:55 Got new message from client 5 +2024/12/12 20:00:55 Sent new info to client +2024/12/12 20:00:58 Got new message from client 5 +2024/12/12 20:00:58 Sent new info to client +2024/12/12 20:01:00 Got new message from client 5 +2024/12/12 20:01:03 Got new message from client 5 +2024/12/12 20:01:03 Sent new info to client +2024/12/12 20:01:04 Got new message from client 5 +2024/12/12 20:01:04 Sent new info to client +2024/12/12 20:01:05 Got new message from client 5 +2024/12/12 20:01:06 Got new message from client 5 +2024/12/12 20:01:07 Got new message from client 5 +2024/12/12 20:01:07 Sent new info to client +2024/12/12 20:01:08 Got new message from client 5 +2024/12/12 20:01:08 Actual info already on client +2024/12/12 20:01:09 Got new message from client 5 +2024/12/12 20:01:09 Sent new info to client +2024/12/12 20:01:10 Got new message from client 5 +2024/12/12 20:01:10 Sent new info to client +2024/12/12 20:01:11 Got new message from client 5 +2024/12/12 20:01:11 Actual info already on client +2024/12/12 20:01:12 Got new message from client 5 +2024/12/12 20:01:13 Got new message from client 5 +2024/12/12 20:01:14 Got new message from client 5 +2024/12/12 20:01:14 Actual info already on client +2024/12/12 20:01:21 Connection with client 5 closed +2024/12/12 20:14:22 Socket created +2024/12/12 20:14:31 New thread created for socket 4 +2024/12/12 20:14:49 Got new message from client 4 +2024/12/12 20:14:54 Connection with client 4 closed +2024/12/12 20:22:52 New thread created for socket 4 diff --git a/server1/server b/server1/server index 69d8afea6338487dc6acbd3c0a4405866af7d320..d866659a2b1b9ff6b274ff1ce9c4c9695fbcfea6 100755 GIT binary patch literal 60936 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 Zb|cG`RD50{ZT?r@h}Nu literal 55160 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