Refactor logging to use logf function and update log file name

This commit is contained in:
scawful
2024-12-31 16:54:44 -05:00
parent 50e4117230
commit 0e67413d55
3 changed files with 28 additions and 63 deletions

View File

@@ -196,7 +196,7 @@ class NotifyValue {
}; };
static bool log_to_console = false; static bool log_to_console = false;
static std::string log_file_out = "log.txt"; constexpr std::string kLogFileOut = "yaze_log.txt";
template <typename... Args> template <typename... Args>
static void logf(const absl::FormatSpec<Args...> &format, const Args &...args) { static void logf(const absl::FormatSpec<Args...> &format, const Args &...args) {
@@ -204,38 +204,10 @@ static void logf(const absl::FormatSpec<Args...> &format, const Args &...args) {
if (log_to_console) { if (log_to_console) {
std::cout << message << std::endl; std::cout << message << std::endl;
} }
static std::ofstream fout(log_file_out, std::ios::out | std::ios::app); static std::ofstream fout(kLogFileOut, std::ios::out | std::ios::app);
fout << message << std::endl; fout << message << std::endl;
} }
struct StructuredLog {
std::string raw_message;
std::string category;
};
static absl::flat_hash_map<std::string, std::vector<std::string>>
log_categories;
template <typename... Args>
static void logm(const std::string &category,
const absl::FormatSpec<Args...> &format, const Args &...args) {
std::string message = absl::StrFormat(format, args...);
std::cout << category << ": " << message << std::endl;
if (log_categories.contains(category)) {
log_categories[category].push_back(message);
} else {
log_categories[category] = {message};
}
}
class Logger {
public:
static void log(std::string message) {
static std::ofstream fout(log_file_out, std::ios::out | std::ios::app);
fout << message << std::endl;
}
};
constexpr uint32_t kFastRomRegion = 0x808000; constexpr uint32_t kFastRomRegion = 0x808000;
inline uint32_t SnesToPc(uint32_t addr) noexcept { inline uint32_t SnesToPc(uint32_t addr) noexcept {

View File

@@ -328,9 +328,7 @@ class Rom : public core::ExperimentFlags {
value, addr)); value, addr));
} }
rom_data_[addr] = value; rom_data_[addr] = value;
std::string log_str = absl::StrFormat("WriteByte: %#06X: %s", addr, core::logf("WriteByte: %#06X: %s", addr, core::HexByte(value).data());
core::HexByte(value).data());
core::Logger::log(log_str);
return absl::OkStatus(); return absl::OkStatus();
} }
@@ -343,8 +341,7 @@ class Rom : public core::ExperimentFlags {
} }
rom_data_[addr] = (uint8_t)(value & 0xFF); rom_data_[addr] = (uint8_t)(value & 0xFF);
rom_data_[addr + 1] = (uint8_t)((value >> 8) & 0xFF); rom_data_[addr + 1] = (uint8_t)((value >> 8) & 0xFF);
core::Logger::log(absl::StrFormat("WriteWord: %#06X: %s", addr, core::logf("WriteWord: %#06X: %s", addr, core::HexWord(value).data());
core::HexWord(value)));
return absl::OkStatus(); return absl::OkStatus();
} }
@@ -357,8 +354,7 @@ class Rom : public core::ExperimentFlags {
} }
rom_data_[addr] = (uint8_t)(value & 0xFF); rom_data_[addr] = (uint8_t)(value & 0xFF);
rom_data_[addr + 1] = (uint8_t)((value >> 8) & 0xFF); rom_data_[addr + 1] = (uint8_t)((value >> 8) & 0xFF);
core::Logger::log(absl::StrFormat("WriteShort: %#06X: %s", addr, core::logf("WriteShort: %#06X: %s", addr, core::HexWord(value).data());
core::HexWord(value)));
return absl::OkStatus(); return absl::OkStatus();
} }
@@ -372,8 +368,7 @@ class Rom : public core::ExperimentFlags {
rom_data_[addr] = (uint8_t)(value & 0xFF); rom_data_[addr] = (uint8_t)(value & 0xFF);
rom_data_[addr + 1] = (uint8_t)((value >> 8) & 0xFF); rom_data_[addr + 1] = (uint8_t)((value >> 8) & 0xFF);
rom_data_[addr + 2] = (uint8_t)((value >> 16) & 0xFF); rom_data_[addr + 2] = (uint8_t)((value >> 16) & 0xFF);
core::Logger::log(absl::StrFormat("WriteLong: %#06X: %s", addr, core::logf("WriteLong: %#06X: %s", addr, core::HexLong(value).data());
core::HexLong(value)));
return absl::OkStatus(); return absl::OkStatus();
} }
@@ -387,8 +382,7 @@ class Rom : public core::ExperimentFlags {
for (int i = 0; i < static_cast<int>(data.size()); i++) { for (int i = 0; i < static_cast<int>(data.size()); i++) {
rom_data_[addr + i] = data[i]; rom_data_[addr + i] = data[i];
} }
core::Logger::log(absl::StrFormat("WriteVector: %#06X: %s", addr, core::logf("WriteVector: %#06X: %s", addr, core::HexByte(data[0]).data());
core::HexByte(data[0])));
return absl::OkStatus(); return absl::OkStatus();
} }
@@ -397,8 +391,7 @@ class Rom : public core::ExperimentFlags {
((color.snes() & 0x1F) << 10) | (color.snes() & 0x7C00); ((color.snes() & 0x1F) << 10) | (color.snes() & 0x7C00);
// Write the 16-bit color value to the ROM at the specified address // Write the 16-bit color value to the ROM at the specified address
core::Logger::log(absl::StrFormat("WriteColor: %#06X: %s", address, core::logf("WriteColor: %#06X: %s", address, core::HexWord(bgr).data());
core::HexWord(bgr)));
return WriteShort(address, bgr); return WriteShort(address, bgr);
} }

View File

@@ -520,7 +520,7 @@ absl::Status Overworld::Save(Rom &rom) {
} }
absl::Status Overworld::SaveOverworldMaps() { absl::Status Overworld::SaveOverworldMaps() {
core::Logger::log("Saving Overworld Maps"); core::logf("Saving Overworld Maps");
// Initialize map pointers // Initialize map pointers
std::fill(map_pointers1_id.begin(), map_pointers1_id.end(), -1); std::fill(map_pointers1_id.begin(), map_pointers1_id.end(), -1);
@@ -571,8 +571,8 @@ absl::Status Overworld::SaveOverworldMaps() {
} }
if ((pos + size_a) >= 0x6411F && (pos + size_a) <= 0x70000) { if ((pos + size_a) >= 0x6411F && (pos + size_a) <= 0x70000) {
core::Logger::log("Pos set to overflow region for map " + core::logf("Pos set to overflow region for map %s at %s",
std::to_string(i) + " at " + core::HexLong(pos)); std::to_string(i), core::HexLong(pos));
pos = OverworldMapDataOverflow; // 0x0F8780; pos = OverworldMapDataOverflow; // 0x0F8780;
} }
@@ -608,8 +608,8 @@ absl::Status Overworld::SaveOverworldMaps() {
std::copy(a.begin(), a.end(), map_data_p1[i].begin()); std::copy(a.begin(), a.end(), map_data_p1[i].begin());
int snes_pos = core::PcToSnes(pos); int snes_pos = core::PcToSnes(pos);
map_pointers1[i] = snes_pos; map_pointers1[i] = snes_pos;
core::Logger::log("Saving map pointers1 and compressed data for map " + core::logf("Saving map pointers1 and compressed data for map %s at %s",
core::HexByte(i) + " at " + core::HexLong(snes_pos)); core::HexByte(i), core::HexLong(snes_pos));
RETURN_IF_ERROR(rom()->WriteLong( RETURN_IF_ERROR(rom()->WriteLong(
rom()->version_constants().kCompressedAllMap32PointersLow + (3 * i), rom()->version_constants().kCompressedAllMap32PointersLow + (3 * i),
snes_pos)); snes_pos));
@@ -618,8 +618,8 @@ absl::Status Overworld::SaveOverworldMaps() {
} else { } else {
// Save pointer for map1 // Save pointer for map1
int snes_pos = map_pointers1[map_pointers1_id[i]]; int snes_pos = map_pointers1[map_pointers1_id[i]];
core::Logger::log("Saving map pointers1 for map " + core::HexByte(i) + core::logf("Saving map pointers1 for map %s at %s", core::HexByte(i),
" at " + core::HexLong(snes_pos)); core::HexLong(snes_pos));
RETURN_IF_ERROR(rom()->WriteLong( RETURN_IF_ERROR(rom()->WriteLong(
rom()->version_constants().kCompressedAllMap32PointersLow + (3 * i), rom()->version_constants().kCompressedAllMap32PointersLow + (3 * i),
snes_pos)); snes_pos));
@@ -630,8 +630,8 @@ absl::Status Overworld::SaveOverworldMaps() {
} }
if ((pos + b.size()) >= 0x6411F && (pos + b.size()) <= 0x70000) { if ((pos + b.size()) >= 0x6411F && (pos + b.size()) <= 0x70000) {
core::Logger::log("Pos set to overflow region for map " + core::logf("Pos set to overflow region for map %s at %s",
core::HexByte(i) + " at " + core::HexLong(pos)); core::HexByte(i), core::HexLong(pos));
pos = OverworldMapDataOverflow; pos = OverworldMapDataOverflow;
} }
@@ -640,8 +640,8 @@ absl::Status Overworld::SaveOverworldMaps() {
std::copy(b.begin(), b.end(), map_data_p2[i].begin()); std::copy(b.begin(), b.end(), map_data_p2[i].begin());
int snes_pos = core::PcToSnes(pos); int snes_pos = core::PcToSnes(pos);
map_pointers2[i] = snes_pos; map_pointers2[i] = snes_pos;
core::Logger::log("Saving map pointers2 and compressed data for map " + core::logf("Saving map pointers2 and compressed data for map %s at %s",
core::HexByte(i) + " at " + core::HexLong(snes_pos)); core::HexByte(i), core::HexLong(snes_pos));
RETURN_IF_ERROR(rom()->WriteLong( RETURN_IF_ERROR(rom()->WriteLong(
rom()->version_constants().kCompressedAllMap32PointersHigh + (3 * i), rom()->version_constants().kCompressedAllMap32PointersHigh + (3 * i),
snes_pos)); snes_pos));
@@ -650,8 +650,8 @@ absl::Status Overworld::SaveOverworldMaps() {
} else { } else {
// Save pointer for map2 // Save pointer for map2
int snes_pos = map_pointers2[map_pointers2_id[i]]; int snes_pos = map_pointers2[map_pointers2_id[i]];
core::Logger::log("Saving map pointers2 for map " + core::HexByte(i) + core::logf("Saving map pointers2 for map %s at %s", core::HexByte(i),
" at " + core::HexLong(snes_pos)); core::HexLong(snes_pos));
RETURN_IF_ERROR(rom()->WriteLong( RETURN_IF_ERROR(rom()->WriteLong(
rom()->version_constants().kCompressedAllMap32PointersHigh + (3 * i), rom()->version_constants().kCompressedAllMap32PointersHigh + (3 * i),
snes_pos)); snes_pos));
@@ -660,7 +660,7 @@ absl::Status Overworld::SaveOverworldMaps() {
// Check if too many maps data // Check if too many maps data
if (pos > 0x137FFF) { if (pos > 0x137FFF) {
std::cerr << "Too many maps data " << std::hex << pos << std::endl; core::logf("Too many maps data %s", core::HexLong(pos));
return absl::AbortedError("Too many maps data " + std::to_string(pos)); return absl::AbortedError("Too many maps data " + std::to_string(pos));
} }
@@ -671,7 +671,7 @@ absl::Status Overworld::SaveOverworldMaps() {
} }
absl::Status Overworld::SaveLargeMaps() { absl::Status Overworld::SaveLargeMaps() {
core::Logger::log("Saving Large Maps"); core::logf("Saving Large Maps");
std::vector<uint8_t> checked_map; std::vector<uint8_t> checked_map;
for (int i = 0; i < 0x40; i++) { for (int i = 0; i < 0x40; i++) {
@@ -1141,7 +1141,7 @@ absl::Status Overworld::SaveMap32Expanded() {
} }
absl::Status Overworld::SaveMap32Tiles() { absl::Status Overworld::SaveMap32Tiles() {
core::Logger::log("Saving Map32 Tiles"); core::logf("Saving Map32 Tiles");
constexpr int kMaxUniqueTiles = 0x4540; constexpr int kMaxUniqueTiles = 0x4540;
constexpr int kTilesPer32x32Tile = 6; constexpr int kTilesPer32x32Tile = 6;
@@ -1348,7 +1348,7 @@ absl::Status Overworld::SaveMap16Expanded() {
} }
absl::Status Overworld::SaveMap16Tiles() { absl::Status Overworld::SaveMap16Tiles() {
core::Logger::log("Saving Map16 Tiles"); core::logf("Saving Map16 Tiles");
int tpos = kMap16Tiles; int tpos = kMap16Tiles;
// 3760 // 3760
for (int i = 0; i < NumberOfMap16; i += 1) { for (int i = 0; i < NumberOfMap16; i += 1) {
@@ -1369,7 +1369,7 @@ absl::Status Overworld::SaveMap16Tiles() {
} }
absl::Status Overworld::SaveEntrances() { absl::Status Overworld::SaveEntrances() {
core::Logger::log("Saving Entrances"); core::logf("Saving Entrances");
for (int i = 0; i < 129; i++) { for (int i = 0; i < 129; i++) {
RETURN_IF_ERROR( RETURN_IF_ERROR(
rom()->WriteShort(OWEntranceMap + (i * 2), all_entrances_[i].map_id_)) rom()->WriteShort(OWEntranceMap + (i * 2), all_entrances_[i].map_id_))
@@ -1392,7 +1392,7 @@ absl::Status Overworld::SaveEntrances() {
} }
absl::Status Overworld::SaveExits() { absl::Status Overworld::SaveExits() {
core::Logger::log("Saving Exits"); core::logf("Saving Exits");
for (int i = 0; i < 0x4F; i++) { for (int i = 0; i < 0x4F; i++) {
RETURN_IF_ERROR( RETURN_IF_ERROR(
rom()->WriteShort(OWExitRoomId + (i * 2), all_exits_[i].room_id_)); rom()->WriteShort(OWExitRoomId + (i * 2), all_exits_[i].room_id_));
@@ -1537,7 +1537,7 @@ absl::Status Overworld::SaveItems() {
} }
absl::Status Overworld::SaveMapProperties() { absl::Status Overworld::SaveMapProperties() {
core::Logger::log("Saving Map Properties"); core::logf("Saving Map Properties");
for (int i = 0; i < 64; i++) { for (int i = 0; i < 64; i++) {
RETURN_IF_ERROR(rom()->WriteByte(kAreaGfxIdPtr + i, RETURN_IF_ERROR(rom()->WriteByte(kAreaGfxIdPtr + i,
overworld_maps_[i].area_graphics())); overworld_maps_[i].area_graphics()));