Program Listing for File NuMagSANSlib_LogFile.h#
↰ Return to documentation for file (src/NuMagSANSlib_LogFile.h)
// File : NuMagSANSlib_LogFile.h
// Author : Dr. Michael Philipp ADAMS
// Company : University of Luxembourg
// Department : Department of Physics and Materials Sciences
// Group : NanoMagnetism Group
// Group Leader : Prof. Andreas Michels
// Version : 16 October 2025
// OS : Linux Ubuntu
// Language : CUDA C++
#pragma once
#include <fstream>
#include <iostream>
#include <string>
#include <chrono>
#include <iomanip>
namespace LogSystem {
inline std::ofstream logFile;
// open log file
inline void initLog(const std::string& filename = "log.txt")
{
logFile.open(filename, std::ios::out | std::ios::app);
if (!logFile.is_open()) {
std::cerr << "Could not open log file: " << filename << std::endl;
return;
}
auto now = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
logFile << "# Log started: " << std::put_time(std::localtime(&now), "%F %T") << "\n";
logFile.flush();
std::cout << "Logging to: " << filename << std::endl;
}
// write message to log file
inline void write(const std::string& msg)
{
if (!logFile.is_open()) return;
auto now = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
logFile << std::put_time(std::localtime(&now), "%F %T") << " | " << msg << '\n';
logFile.flush();
// optional: auch aufs Terminal
std::cout << std::put_time(std::localtime(&now), "%F %T") << " | " << msg << std::endl;
}
// close log file
inline void close()
{
auto now = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
if (logFile.is_open()) {
logFile << "# Log closed:" << std::put_time(std::localtime(&now), "%F %T") << "\n";
logFile.close();
}
}
} // namespace LogSystem