Compare commits

...

3 Commits

Author SHA1 Message Date
332dbd802d
add project makefile 2024-11-23 19:41:38 +03:00
5b1dbe5db0
add -text 2024-11-23 19:40:46 +03:00
0b820f1e6e
fix readme 2024-11-23 19:19:27 +03:00
7 changed files with 47 additions and 42 deletions

13
Makefile Normal file
View File

@ -0,0 +1,13 @@
SUBDIRS = libmysyslog libmysyslog-text libmysyslog-json libmysyslog-client libmysyslog-daemon
all:
@for dir in $(SUBDIRS); do \
$(MAKE) -C $$dir; \
done
clean:
@for dir in $(SUBDIRS); do \
$(MAKE) -C $$dir clean; \
done
.PHONY: all clean

View File

@ -1,23 +1,17 @@
CC = gcc
CFLAGS = -Wall -g -fPIC
LDFLAGS =
CFLAGS = -Wall -Wextra -fPIC
LDFLAGS = -shared
TARGET = libmysyslog-text.so
LIBRARY = libmysyslog-text.a
OBJ = src/log_text.o
all: $(TARGET)
all: $(LIBRARY)
$(TARGET): libmysyslog-text.o
$(CC) $(LDFLAGS) -o $@ $^
$(LIBRARY): $(OBJ)
ar rcs $@ $^
libmysyslog-text.o: libmysyslog-text.c libmysyslog-text.h
$(CC) $(CFLAGS) -c $<
clean:
rm -f $(OBJ) $(LIBRARY)
rm -f *.o $(TARGET)
deb:
# Deb package building logic
install: $(LIBRARY)
cp $(LIBRARY) /usr/local/lib
ldconfig
.PHONY: all clean deb install
.PHONY: all clean

View File

@ -1,8 +0,0 @@
#ifndef LOG_TEXT_H
#define LOG_TEXT_H
#include "mysyslog.h"
void log_text(const char* msg, LogLevel level, const char* path);
#endif // LOG_TEXT_H

View File

@ -0,0 +1,15 @@
#include "libmysyslog-text.h"
#include <stdio.h>
#include <time.h>
static const char* log_levels[] = {"DEBUG", "INFO", "WARN", "ERROR", "CRITICAL"};
int log_to_text(const char* msg, int level, const char* path) {
FILE* file = fopen(path, "a");
if (!file) return -1;
time_t now = time(NULL);
fprintf(file, "%ld %s %s\n", now, log_levels[level], msg);
fclose(file);
return 0;
}

View File

@ -0,0 +1,6 @@
#ifndef LIBMYSYSLOG_TEXT_H
#define LIBMYSYSLOG_TEXT_H
int log_to_text(const char* msg, int level, const char* path);
#endif // LIBMYSYSLOG_TEXT_H

View File

@ -1,15 +0,0 @@
#include <stdio.h>
#include <time.h>
#include "log_text.h"
void log_text(const char* msg, LogLevel level, const char* path) {
FILE* f = fopen(path, "a");
if (!f) return;
time_t t = time(NULL);
struct tm* tm_info = localtime(&t);
// Format log entry
fprintf(f, "%ld %d example-app %s\n", t, level, msg);
fclose(f);
}

View File

@ -1,5 +1,5 @@
# Библиотека libmysyslog на языке Си
14. Разработать расширяемую библиотеку libmysyslog на языке Си, которая сможет выводить данные в журнал в разных форматах. В рамках библиотеки необходимо реализовать функцию, через которую другие программы смогут выводить данные в журнал:
Разработать расширяемую библиотеку libmysyslog на языке Си, которая сможет выводить данные в журнал в разных форматах. В рамках библиотеки необходимо реализовать функцию, через которую другие программы смогут выводить данные в журнал:
```c
int mysyslog(const char* msg, int level, int driver, int format, const char* path);
```
@ -8,9 +8,9 @@ int mysyslog(const char* msg, int level, int driver, int format, const char* pat
Для библиотеки libmysyslog реализованы в виде подключаемого плагина 2 драйвера (libmysyslog-text, libmysyslog-json): вывод в журнал в виде строки с разделителем и вывод в журнал в виде json строки.
Структура журнала в текстовом формате:
```
timestamp log_level process message
```
Пример журнала в текстовом формате:
```
1439482969 ERROR example-app this is an error