Skip to content

Commit

Permalink
Merge pull request #33 from coders-school/openSSL
Browse files Browse the repository at this point in the history
Logger integration
  • Loading branch information
Kacperfis authored Feb 20, 2024
2 parents 9dcc428 + 9c35f58 commit eddf00d
Show file tree
Hide file tree
Showing 5 changed files with 104 additions and 3 deletions.
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ cmake_minimum_required(VERSION 3.14)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_COMPILER g++-13)

project(PasswordManager)

Expand Down
7 changes: 6 additions & 1 deletion source/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,15 @@ add_library(sqlite3 STATIC ../lib/sqlite3.c)
find_package(OpenSSL REQUIRED)
include_directories(${OPENSSL_INCLUDE_DIR})

add_executable(passwordManager main.cpp PasswordManager.cpp)
add_executable(passwordManager
main.cpp
PasswordManager.cpp
Common/Logger.cpp)

target_include_directories(sqlite3 PUBLIC ../lib)
target_link_libraries(passwordManager PRIVATE sqlite3 ${OPENSSL_LIBRARIES})

add_subdirectory(test)
add_subdirectory(DataBase)

target_include_directories(passwordManager PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/headers)
55 changes: 55 additions & 0 deletions source/Common/Logger.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
#include "Logger.hpp"

#include <chrono>
#include <format>
#include <memory>
#include <sstream>
#include <vector>

namespace common::logger {

Logger::Logger(const std::string& prefix, const std::string& testName)
: prefix_(prefix), testName_(testName) {
std::error_code errorCode;
std::filesystem::create_directories(logDirectory_, errorCode);
if (errorCode) {
std::cerr << "failed to create log directory: " << errorCode.message()
<< std::endl;
return;
}

std::filesystem::path loggingFilePath = logDirectory_ / (testName_ + ".log");
file_.open(loggingFilePath, std::ios::app);
if (!file_.is_open()) {
std::cerr << "unable to open logs file at " << loggingFilePath << std::endl;
}
}

void Logger::log(const std::string& message) noexcept {
auto currentTime = std::chrono::system_clock::now();
auto timeStamp = std::chrono::system_clock::to_time_t(currentTime);
std::tm timeInfo = *std::localtime(&timeStamp);

std::stringstream ss;
ss << std::put_time(&timeInfo, "%Y-%m-%d %H:%M:%S");
std::string timeStr = ss.str();
std::vector<std::string> severityVec = {"INFO", "WARNING", "DEBUG", "ERROR"};

std::string logMessage = std::format(
"{} [{}][{}]: {}\n", timeStr,
severityVec[static_cast<int>(currentSeverity_)], prefix_, message);

file_ << logMessage;
}

Logger& Logger::operator<<(Severity severity) noexcept {
currentSeverity_ = severity;
return *this;
}

Logger& Logger::operator<<(const std::string& message) noexcept {
log(message);
return *this;
}

} // namespace common::logger
40 changes: 40 additions & 0 deletions source/Common/Logger.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#pragma once

#include <filesystem>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <string>

#include "time.h"

namespace common::logger {

enum class Severity { info, warning, debug, error };

class Logger final {
public:
explicit Logger(const std::string& prefix,
const std::string& testName = "defaultLogs");
~Logger() = default;

Logger& operator<<(Severity severity) noexcept;
Logger& operator<<(const std::string& message) noexcept;

private:
void log(const std::string& message) noexcept;

std::ofstream file_;
std::string prefix_;
std::string testName_;
Severity currentSeverity_;

static inline const std::filesystem::path logDirectory_ = "ut_logs/";
};

} // namespace common::logger

constexpr common::logger::Severity info = common::logger::Severity::info;
constexpr common::logger::Severity warning = common::logger::Severity::warning;
constexpr common::logger::Severity debug = common::logger::Severity::debug;
constexpr common::logger::Severity error = common::logger::Severity::error;
4 changes: 2 additions & 2 deletions source/PasswordManager.cpp
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
#include "PasswordManager.h"

#include <iostream>
#include "Common/Logger.hpp"

PasswordManager::PasswordManager(const std::string &password)
PasswordManager::PasswordManager(const std::string& password)
: password_(password) {
std::cout << "Password is: " << password_ << '\n';
}
Expand Down

0 comments on commit eddf00d

Please sign in to comment.