Skip to content

Commit 704d892

Browse files
make the file logger work with Nabla files
1 parent 5883f04 commit 704d892

File tree

1 file changed

+12
-15
lines changed

1 file changed

+12
-15
lines changed

include/nbl/system/CFileLogger.h

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,31 @@
11
#ifndef _NBL_SYSTEM_C_FILE_LOGGER_INCLUDED_
22
#define _NBL_SYSTEM_C_FILE_LOGGER_INCLUDED_
33

4-
#include <filesystem>
5-
#include <fstream>
6-
7-
#include "IThreadsafeLogger.h"
4+
#include "nbl/system/IThreadsafeLogger.h"
5+
#include "nbl/system/IFile.h"
86

97
namespace nbl::system
108
{
119

1210
class CFileLogger : public IThreadsafeLogger
1311
{
1412
public:
15-
static core::smart_refctd_ptr<CFileLogger> create(const std::filesystem::path& outputFileName)
16-
{
17-
auto ret = core::smart_refctd_ptr<CFileLogger>(new CFileLogger(outputFileName));
18-
if (!ret->m_ofs.is_open()) return nullptr;
19-
return ret;
20-
}
21-
~CFileLogger()
13+
CFileLogger(core::smart_refctd_ptr<IFile>&& _file, const core::bitflag<E_LOG_LEVEL> logLevelMask=ILogger::defaultLogMask())
14+
: IThreadsafeLogger(logLevelMask), m_file(std::move(_file))
2215
{
2316
}
24-
private:
25-
std::ofstream m_ofs;
26-
CFileLogger(const std::filesystem::path& outputFileName, core::bitflag<E_LOG_LEVEL> logLevelMask = ILogger::defaultLogMask()) : IThreadsafeLogger(logLevelMask), m_ofs(outputFileName, std::ios_base::app){}
17+
18+
protected:
19+
~CFileLogger() = default;
2720

2821
virtual void threadsafeLog_impl(const std::string_view& fmt, E_LOG_LEVEL logLevel, va_list args) override
2922
{
30-
m_ofs << constructLogString(fmt, logLevel, args).data() << std::flush;
23+
const auto str = constructLogString(fmt, logLevel, args);
24+
ISystem::future_t<size_t> future;
25+
m_file->write(future,str.data(),m_file->getSize(),str.length());
3126
}
27+
28+
core::smart_refctd_ptr<IFile> m_file;
3229
};
3330

3431
}

0 commit comments

Comments
 (0)