filesize iomanip
This commit is contained in:
parent
9a43d50969
commit
13559b181e
19
Log.cpp
19
Log.cpp
|
@ -271,4 +271,23 @@ void setColoredOutput(bool enabled) {
|
||||||
dynamic_cast<ConsoleOutput&>(*outputs.at(0)).setColoredOutput(enabled); // has to exist
|
dynamic_cast<ConsoleOutput&>(*outputs.at(0)).setColoredOutput(enabled); // has to exist
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::ostream& operator<<(std::ostream& str, const FileSize& fs) {
|
||||||
|
static const char PREFIX[] {' ', 'K', 'M', 'G', 'T', 'P', 'E'};
|
||||||
|
static const uint_fast8_t PREFIXCOUNT = 7;
|
||||||
|
static const uint_fast32_t FACTOR = 1000;
|
||||||
|
static const uint_fast32_t COMMA = 100; // nach komma stellen
|
||||||
|
|
||||||
|
uint64_t cpy = fs.fs * COMMA;
|
||||||
|
uint_fast8_t prefix = 0;
|
||||||
|
while(cpy > (FACTOR * 3 * COMMA) && prefix < PREFIXCOUNT) {
|
||||||
|
cpy /= FACTOR;
|
||||||
|
++prefix;
|
||||||
|
}
|
||||||
|
|
||||||
|
str << (cpy / (float) COMMA);
|
||||||
|
if(prefix > 0)
|
||||||
|
str << PREFIX[prefix];
|
||||||
|
return str << "B";
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace Log
|
} // namespace Log
|
14
Log.h
14
Log.h
|
@ -105,6 +105,20 @@ extern std::vector<Entry::MetaFunction> entryMetaFunctions;
|
||||||
std::ostream& defaultEntryMetaTime(std::ostream&, const Entry&);
|
std::ostream& defaultEntryMetaTime(std::ostream&, const Entry&);
|
||||||
std::ostream& defaultEntryMetaLevel(std::ostream&, const Entry&);
|
std::ostream& defaultEntryMetaLevel(std::ostream&, const Entry&);
|
||||||
|
|
||||||
|
// custom io-manip
|
||||||
|
// FileSize is a iomanip to convert a filesize (fs) into a human readable format
|
||||||
|
class FileSize {
|
||||||
|
public:
|
||||||
|
explicit FileSize(uint64_t fs) : fs(fs) {}
|
||||||
|
FileSize(const FileSize&) = delete;
|
||||||
|
FileSize& operator=(const FileSize&) = delete;
|
||||||
|
private:
|
||||||
|
uint64_t fs;
|
||||||
|
friend std::ostream& operator<<(std::ostream& str, const FileSize& fs);
|
||||||
|
};
|
||||||
|
|
||||||
|
std::ostream& operator<<(std::ostream& str, const FileSize& fs);
|
||||||
|
|
||||||
// copy Level values in Log namespace
|
// copy Level values in Log namespace
|
||||||
constexpr Level off = Level::off;
|
constexpr Level off = Level::off;
|
||||||
constexpr Level fatal = Level::fatal;
|
constexpr Level fatal = Level::fatal;
|
||||||
|
|
7
test.cpp
7
test.cpp
|
@ -83,6 +83,13 @@ int main() {
|
||||||
Log::error << "error msg @Lvl fatal; " << 42 << "; " << 3.14159;
|
Log::error << "error msg @Lvl fatal; " << 42 << "; " << 3.14159;
|
||||||
Log::fatal << "fatal msg @Lvl fatal; " << 42 << "; " << 3.14159;
|
Log::fatal << "fatal msg @Lvl fatal; " << 42 << "; " << 3.14159;
|
||||||
|
|
||||||
|
Log::setConsoleLogLevel(Log::Level::trace);
|
||||||
|
std::cout << "=== Log FileSize ===" << std::endl;
|
||||||
|
Log::info << 1234 << " " << Log::FileSize(1234);
|
||||||
|
Log::info << 123456 << " " << Log::FileSize(123456);
|
||||||
|
Log::info << 85241 << " " << Log::FileSize(85241);
|
||||||
|
Log::info << 9876543210 << " " << Log::FileSize(9876543210);
|
||||||
|
|
||||||
Log::stop();
|
Log::stop();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue