Merge branch 'feature/spdlog' into develop

This commit is contained in:
Dan Paulat 2022-04-19 16:18:58 -05:00
commit 2723ad1966
104 changed files with 780 additions and 946 deletions

View file

@ -19,6 +19,7 @@ conan_cmake_configure(REQUIRES boost/1.78.0
glm/0.9.9.8 glm/0.9.9.8
gtest/cci.20210126 gtest/cci.20210126
openssl/1.1.1n openssl/1.1.1n
spdlog/1.10.0
vulkan-loader/1.3.204.1 vulkan-loader/1.3.204.1
GENERATORS cmake GENERATORS cmake
cmake_find_package cmake_find_package

View file

@ -206,10 +206,6 @@ qt6_create_translation_scwx(QM_FILES ${scwx-qt_SOURCE_DIR} ${TS_FILES})
if (WIN32) if (WIN32)
target_compile_definitions(scwx-qt PUBLIC WIN32_LEAN_AND_MEAN) target_compile_definitions(scwx-qt PUBLIC WIN32_LEAN_AND_MEAN)
target_compile_definitions(supercell-wx PUBLIC WIN32_LEAN_AND_MEAN) target_compile_definitions(supercell-wx PUBLIC WIN32_LEAN_AND_MEAN)
# For Boost::log
target_compile_definitions(scwx-qt PRIVATE BOOST_USE_WINAPI_VERSION=0x0601)
target_compile_definitions(supercell-wx PRIVATE BOOST_USE_WINAPI_VERSION=0x0601)
endif() endif()
target_include_directories(scwx-qt PUBLIC ${scwx-qt_SOURCE_DIR}/source target_include_directories(scwx-qt PUBLIC ${scwx-qt_SOURCE_DIR}/source

View file

@ -1,11 +1,10 @@
#include <scwx/qt/config/radar_site.hpp> #include <scwx/qt/config/radar_site.hpp>
#include <scwx/qt/util/json.hpp> #include <scwx/qt/util/json.hpp>
#include <scwx/common/sites.hpp> #include <scwx/common/sites.hpp>
#include <scwx/util/logger.hpp>
#include <unordered_map> #include <unordered_map>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace qt namespace qt
@ -13,7 +12,8 @@ namespace qt
namespace config namespace config
{ {
static const std::string logPrefix_ = "[scwx::qt::settings::radar_site] "; static const std::string logPrefix_ = "scwx::qt::settings::radar_site";
static const auto logger_ = scwx::util::Logger::Create(logPrefix_);
static const std::string defaultRadarSiteFile_ = static const std::string defaultRadarSiteFile_ =
":/res/config/radar_sites.json"; ":/res/config/radar_sites.json";
@ -121,8 +121,7 @@ void RadarSite::Initialize()
size_t RadarSite::ReadConfig(const std::string& path) size_t RadarSite::ReadConfig(const std::string& path)
{ {
BOOST_LOG_TRIVIAL(info) << logPrefix_ << "Loading radar sites from \"" logger_->info("Loading radar sites from \"{}\"...", path);
<< path << "\"...";
bool dataValid = true; bool dataValid = true;
size_t sitesAdded = 0; size_t sitesAdded = 0;
@ -139,7 +138,7 @@ size_t RadarSite::ReadConfig(const std::string& path)
if (!ValidateJsonEntry(o)) if (!ValidateJsonEntry(o))
{ {
BOOST_LOG_TRIVIAL(info) << logPrefix_ << "Incorrect format: " << v; logger_->info("Incorrect format: {}", boost::json::serialize(v));
} }
else else
{ {
@ -168,9 +167,9 @@ size_t RadarSite::ReadConfig(const std::string& path)
} }
else else
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Site ID conflict: {} and {}",
<< logPrefix_ << "Site ID conflict: " << siteIdMap_.at(siteId) siteIdMap_.at(siteId),
<< " and " << site->p->id_; site->p->id_);
} }
} }
} }

View file

@ -1,6 +1,6 @@
#include <scwx/qt/gl/draw/draw_item.hpp> #include <scwx/qt/gl/draw/draw_item.hpp>
#include <boost/log/trivial.hpp> #include <string>
namespace scwx namespace scwx
{ {
@ -11,7 +11,7 @@ namespace gl
namespace draw namespace draw
{ {
static const std::string logPrefix_ = "[scwx::qt::gl::draw::draw_item] "; static const std::string logPrefix_ = "scwx::qt::gl::draw::draw_item";
class DrawItemImpl class DrawItemImpl
{ {

View file

@ -2,8 +2,6 @@
#include <optional> #include <optional>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace qt namespace qt
@ -13,7 +11,7 @@ namespace gl
namespace draw namespace draw
{ {
static const std::string logPrefix_ = "[scwx::qt::gl::draw::rectangle] "; static const std::string logPrefix_ = "scwx::qt::gl::draw::rectangle";
static constexpr size_t NUM_RECTANGLES = 5; static constexpr size_t NUM_RECTANGLES = 5;
static constexpr size_t NUM_TRIANGLES = NUM_RECTANGLES * 2; static constexpr size_t NUM_TRIANGLES = NUM_RECTANGLES * 2;

View file

@ -7,8 +7,7 @@
GLenum err; \ GLenum err; \
while ((err = gl.glGetError()) != GL_NO_ERROR) \ while ((err = gl.glGetError()) != GL_NO_ERROR) \
{ \ { \
BOOST_LOG_TRIVIAL(warning) << logPrefix_ << "GL Error: " << err \ logger_->error("GL Error: {}, {}: {}", err, __FILE__, __LINE__); \
<< ", " __FILE__ << ":" << __LINE__; \
} \ } \
} }

View file

@ -1,9 +1,8 @@
#include <scwx/qt/gl/shader_program.hpp> #include <scwx/qt/gl/shader_program.hpp>
#include <scwx/util/logger.hpp>
#include <QFile> #include <QFile>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace qt namespace qt
@ -11,7 +10,8 @@ namespace qt
namespace gl namespace gl
{ {
static const std::string logPrefix_ = "[scwx::qt::gl::shader_program] "; static const std::string logPrefix_ = "scwx::qt::gl::shader_program";
static const auto logger_ = scwx::util::Logger::Create(logPrefix_);
static constexpr GLsizei INFO_LOG_BUF_SIZE = 512; static constexpr GLsizei INFO_LOG_BUF_SIZE = 512;
@ -53,8 +53,7 @@ GLuint ShaderProgram::id() const
bool ShaderProgram::Load(const std::string& vertexPath, bool ShaderProgram::Load(const std::string& vertexPath,
const std::string& fragmentPath) const std::string& fragmentPath)
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Load(\"" << vertexPath << "\", \"" logger_->debug("Load: {}, {}", vertexPath, fragmentPath);
<< fragmentPath << "\")";
OpenGLFunctions& gl = p->gl_; OpenGLFunctions& gl = p->gl_;
@ -71,15 +70,13 @@ bool ShaderProgram::Load(const std::string& vertexPath,
if (!vertexFile.isOpen()) if (!vertexFile.isOpen())
{ {
BOOST_LOG_TRIVIAL(error) logger_->error("Could not load vertex shader: {}", vertexPath);
<< logPrefix_ << "Could not load vertex shader: " << vertexPath;
return false; return false;
} }
if (!fragmentFile.isOpen()) if (!fragmentFile.isOpen())
{ {
BOOST_LOG_TRIVIAL(error) logger_->error("Could not load fragment shader: {}", fragmentPath);
<< logPrefix_ << "Could not load fragment shader: " << fragmentPath;
return false; return false;
} }
@ -108,14 +105,12 @@ bool ShaderProgram::Load(const std::string& vertexPath,
gl.glGetShaderInfoLog(vertexShader, INFO_LOG_BUF_SIZE, &logLength, infoLog); gl.glGetShaderInfoLog(vertexShader, INFO_LOG_BUF_SIZE, &logLength, infoLog);
if (!glSuccess) if (!glSuccess)
{ {
BOOST_LOG_TRIVIAL(error) logger_->error("Vertex shader compilation failed: {}", infoLog);
<< logPrefix_ << "Vertex shader compilation failed: " << infoLog;
success = false; success = false;
} }
else if (logLength > 0) else if (logLength > 0)
{ {
BOOST_LOG_TRIVIAL(error) logger_->error("Vertex shader compiled with warnings: {}", infoLog);
<< logPrefix_ << "Vertex shader compiled with warnings: " << infoLog;
} }
// Create a fragment shader // Create a fragment shader
@ -131,14 +126,12 @@ bool ShaderProgram::Load(const std::string& vertexPath,
fragmentShader, INFO_LOG_BUF_SIZE, &logLength, infoLog); fragmentShader, INFO_LOG_BUF_SIZE, &logLength, infoLog);
if (!glSuccess) if (!glSuccess)
{ {
BOOST_LOG_TRIVIAL(error) logger_->error("Fragment shader compilation failed: {}", infoLog);
<< logPrefix_ << "Fragment shader compilation failed: " << infoLog;
success = false; success = false;
} }
else if (logLength > 0) else if (logLength > 0)
{ {
BOOST_LOG_TRIVIAL(error) logger_->error("Fragment shader compiled with warnings: {}", infoLog);
<< logPrefix_ << "Fragment shader compiled with warnings: " << infoLog;
} }
if (success) if (success)
@ -152,14 +145,12 @@ bool ShaderProgram::Load(const std::string& vertexPath,
gl.glGetProgramInfoLog(p->id_, INFO_LOG_BUF_SIZE, &logLength, infoLog); gl.glGetProgramInfoLog(p->id_, INFO_LOG_BUF_SIZE, &logLength, infoLog);
if (!glSuccess) if (!glSuccess)
{ {
BOOST_LOG_TRIVIAL(error) logger_->error("Shader program link failed: {}", infoLog);
<< logPrefix_ << "Shader program link failed: " << infoLog;
success = false; success = false;
} }
else if (logLength > 0) else if (logLength > 0)
{ {
BOOST_LOG_TRIVIAL(error) logger_->error("Shader program linked with warnings: {}", infoLog);
<< logPrefix_ << "Shader program linked with warnings: " << infoLog;
} }
} }

View file

@ -1,6 +1,6 @@
#include <scwx/qt/gl/text_shader.hpp> #include <scwx/qt/gl/text_shader.hpp>
#include <scwx/util/logger.hpp>
#include <boost/log/trivial.hpp>
#include <glm/gtc/type_ptr.hpp> #include <glm/gtc/type_ptr.hpp>
namespace scwx namespace scwx
@ -10,7 +10,8 @@ namespace qt
namespace gl namespace gl
{ {
static const std::string logPrefix_ = "[scwx::qt::gl::text_shader] "; static const std::string logPrefix_ = "scwx::qt::gl::text_shader";
static const auto logger_ = scwx::util::Logger::Create(logPrefix_);
class TextShaderImpl class TextShaderImpl
{ {
@ -46,7 +47,7 @@ bool TextShader::Initialize()
p->projectionLocation_ = gl.glGetUniformLocation(id(), "projection"); p->projectionLocation_ = gl.glGetUniformLocation(id(), "projection");
if (p->projectionLocation_ == -1) if (p->projectionLocation_ == -1)
{ {
BOOST_LOG_TRIVIAL(warning) << logPrefix_ << "Could not find projection"; logger_->warn("Could not find projection");
} }
return success; return success;

View file

@ -2,15 +2,15 @@
#include <scwx/qt/main/main_window.hpp> #include <scwx/qt/main/main_window.hpp>
#include <scwx/qt/manager/resource_manager.hpp> #include <scwx/qt/manager/resource_manager.hpp>
#include <scwx/qt/manager/settings_manager.hpp> #include <scwx/qt/manager/settings_manager.hpp>
#include <scwx/util/logger.hpp>
#include <boost/log/expressions.hpp> #include <spdlog/spdlog.h>
#include <boost/log/trivial.hpp>
#include <QApplication> #include <QApplication>
int main(int argc, char* argv[]) int main(int argc, char* argv[])
{ {
boost::log::core::get()->set_filter(boost::log::trivial::severity >= scwx::util::Logger::Initialize();
boost::log::trivial::debug); spdlog::set_level(spdlog::level::debug);
QCoreApplication::setApplicationName("Supercell Wx"); QCoreApplication::setApplicationName("Supercell Wx");

View file

@ -10,6 +10,7 @@
#include <scwx/common/characters.hpp> #include <scwx/common/characters.hpp>
#include <scwx/common/products.hpp> #include <scwx/common/products.hpp>
#include <scwx/common/vcp.hpp> #include <scwx/common/vcp.hpp>
#include <scwx/util/logger.hpp>
#include <QFileDialog> #include <QFileDialog>
#include <QMessageBox> #include <QMessageBox>
@ -17,8 +18,6 @@
#include <QStandardPaths> #include <QStandardPaths>
#include <QToolButton> #include <QToolButton>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace qt namespace qt
@ -26,7 +25,8 @@ namespace qt
namespace main namespace main
{ {
static const std::string logPrefix_ = "[scwx::qt::main::main_window] "; static const std::string logPrefix_ = "scwx::qt::main::main_window";
static const auto logger_ = util::Logger::Create(logPrefix_);
class MainWindowImpl : public QObject class MainWindowImpl : public QObject
{ {
@ -51,10 +51,9 @@ public:
{ {
if (!std::filesystem::create_directories(appDataPath)) if (!std::filesystem::create_directories(appDataPath))
{ {
BOOST_LOG_TRIVIAL(error) logger_->error(
<< logPrefix_ "Unable to create application local data directory: \"{}\"",
<< "Unable to create application local data directory: \"" appDataPath);
<< appDataPath << "\"";
} }
} }
@ -253,7 +252,7 @@ void MainWindow::on_actionOpen_triggered()
this, this,
[=](const QString& file) [=](const QString& file)
{ {
BOOST_LOG_TRIVIAL(info) << "Selected: " << file.toStdString(); logger_->info("Selected: {}", file.toStdString());
std::shared_ptr<request::NexradFileRequest> request = std::shared_ptr<request::NexradFileRequest> request =
std::make_shared<request::NexradFileRequest>(); std::make_shared<request::NexradFileRequest>();
@ -397,8 +396,7 @@ void MainWindowImpl::SelectRadarProduct(map::MapWidget* mapWidget,
{ {
const std::string& productName = common::GetLevel2Name(product); const std::string& productName = common::GetLevel2Name(product);
BOOST_LOG_TRIVIAL(debug) logger_->debug("Selecting Level 2 radar product: {}", productName);
<< logPrefix_ << "Selecting Level 2 radar product: " << productName;
if (mapWidget == activeMap_) if (mapWidget == activeMap_)
{ {

View file

@ -1,6 +1,7 @@
#include <scwx/qt/manager/radar_product_manager.hpp> #include <scwx/qt/manager/radar_product_manager.hpp>
#include <scwx/common/constants.hpp> #include <scwx/common/constants.hpp>
#include <scwx/util/threads.hpp> #include <scwx/util/threads.hpp>
#include <scwx/util/logger.hpp>
#include <scwx/wsr88d/nexrad_file_factory.hpp> #include <scwx/wsr88d/nexrad_file_factory.hpp>
#include <deque> #include <deque>
@ -8,7 +9,6 @@
#include <mutex> #include <mutex>
#include <shared_mutex> #include <shared_mutex>
#include <boost/log/trivial.hpp>
#include <boost/range/irange.hpp> #include <boost/range/irange.hpp>
#include <boost/timer/timer.hpp> #include <boost/timer/timer.hpp>
#include <GeographicLib/Geodesic.hpp> #include <GeographicLib/Geodesic.hpp>
@ -22,7 +22,8 @@ namespace manager
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ =
"[scwx::qt::manager::radar_product_manager] "; "scwx::qt::manager::radar_product_manager";
static const auto logger_ = scwx::util::Logger::Create(logPrefix_);
typedef std::function<std::shared_ptr<wsr88d::NexradFile>()> typedef std::function<std::shared_ptr<wsr88d::NexradFile>()>
CreateNexradFileFunction; CreateNexradFileFunction;
@ -59,8 +60,7 @@ public:
{ {
if (radarSite_ == nullptr) if (radarSite_ == nullptr)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Radar site not found: \"{}\"", radarId_);
<< logPrefix_ << "Radar site not found: \"" << radarId_ << "\"";
radarSite_ = std::make_shared<config::RadarSite>(); radarSite_ = std::make_shared<config::RadarSite>();
} }
} }
@ -130,7 +130,7 @@ void RadarProductManager::Initialize()
return; return;
} }
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Initialize()"; logger_->debug("Initialize()");
boost::timer::cpu_timer timer; boost::timer::cpu_timer timer;
@ -176,9 +176,8 @@ void RadarProductManager::Initialize()
coordinates0_5Degree[offset + 1] = longitude; coordinates0_5Degree[offset + 1] = longitude;
}); });
timer.stop(); timer.stop();
BOOST_LOG_TRIVIAL(debug) logger_->debug("Coordinates (0.5 degree) calculated in {}",
<< logPrefix_ << "Coordinates (0.5 degree) calculated in " timer.format(6, "%ws"));
<< timer.format(6, "%ws");
// Calculate 1 degree azimuth coordinates // Calculate 1 degree azimuth coordinates
timer.start(); timer.start();
@ -214,9 +213,8 @@ void RadarProductManager::Initialize()
coordinates1Degree[offset + 1] = longitude; coordinates1Degree[offset + 1] = longitude;
}); });
timer.stop(); timer.stop();
BOOST_LOG_TRIVIAL(debug) logger_->debug("Coordinates (1 degree) calculated in {}",
<< logPrefix_ << "Coordinates (1 degree) calculated in " timer.format(6, "%ws"));
<< timer.format(6, "%ws");
p->initialized_ = true; p->initialized_ = true;
} }
@ -224,7 +222,7 @@ void RadarProductManager::Initialize()
void RadarProductManager::LoadData( void RadarProductManager::LoadData(
std::istream& is, std::shared_ptr<request::NexradFileRequest> request) std::istream& is, std::shared_ptr<request::NexradFileRequest> request)
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "LoadData()"; logger_->debug("LoadData()");
RadarProductManagerImpl::LoadNexradFile( RadarProductManagerImpl::LoadNexradFile(
[=, &is]() -> std::shared_ptr<wsr88d::NexradFile> [=, &is]() -> std::shared_ptr<wsr88d::NexradFile>
@ -236,7 +234,7 @@ void RadarProductManager::LoadFile(
const std::string& filename, const std::string& filename,
std::shared_ptr<request::NexradFileRequest> request) std::shared_ptr<request::NexradFileRequest> request)
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "LoadFile(" << filename << ")"; logger_->debug("LoadFile: {}", filename);
std::shared_ptr<types::RadarProductRecord> existingRecord = nullptr; std::shared_ptr<types::RadarProductRecord> existingRecord = nullptr;
@ -245,8 +243,7 @@ void RadarProductManager::LoadFile(
auto it = fileIndex_.find(filename); auto it = fileIndex_.find(filename);
if (it != fileIndex_.cend()) if (it != fileIndex_.cend())
{ {
BOOST_LOG_TRIVIAL(debug) logger_->debug("File previously loaded, loading from file cache");
<< logPrefix_ << "File previously loaded, loading from file cache";
existingRecord = it->second; existingRecord = it->second;
} }
@ -385,7 +382,7 @@ std::shared_ptr<types::RadarProductRecord>
RadarProductManagerImpl::StoreRadarProductRecord( RadarProductManagerImpl::StoreRadarProductRecord(
std::shared_ptr<types::RadarProductRecord> record) std::shared_ptr<types::RadarProductRecord> record)
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "StoreRadarProductRecord()"; logger_->debug("StoreRadarProductRecord()");
std::shared_ptr<types::RadarProductRecord> storedRecord = record; std::shared_ptr<types::RadarProductRecord> storedRecord = record;
@ -394,9 +391,8 @@ RadarProductManagerImpl::StoreRadarProductRecord(
auto it = level2ProductRecords_.find(record->time()); auto it = level2ProductRecords_.find(record->time());
if (it != level2ProductRecords_.cend()) if (it != level2ProductRecords_.cend())
{ {
BOOST_LOG_TRIVIAL(debug) logger_->debug(
<< logPrefix_ "Level 2 product previously loaded, loading from cache");
<< "Level 2 product previously loaded, loading from cache";
storedRecord = it->second; storedRecord = it->second;
} }
@ -412,9 +408,8 @@ RadarProductManagerImpl::StoreRadarProductRecord(
auto it = productMap.find(record->time()); auto it = productMap.find(record->time());
if (it != productMap.cend()) if (it != productMap.cend())
{ {
BOOST_LOG_TRIVIAL(debug) logger_->debug(
<< logPrefix_ "Level 3 product previously loaded, loading from cache");
<< "Level 3 product previously loaded, loading from cache";
storedRecord = it->second; storedRecord = it->second;
} }

View file

@ -1,5 +1,6 @@
#include <scwx/qt/manager/settings_manager.hpp> #include <scwx/qt/manager/settings_manager.hpp>
#include <scwx/qt/util/json.hpp> #include <scwx/qt/util/json.hpp>
#include <scwx/util/logger.hpp>
#include <filesystem> #include <filesystem>
#include <fstream> #include <fstream>
@ -7,8 +8,6 @@
#include <QDir> #include <QDir>
#include <QStandardPaths> #include <QStandardPaths>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace qt namespace qt
@ -18,7 +17,8 @@ namespace manager
namespace SettingsManager namespace SettingsManager
{ {
static const std::string logPrefix_ = "[scwx::qt::manager::settings_manager] "; static const std::string logPrefix_ = "scwx::qt::manager::settings_manager";
static const auto logger_ = scwx::util::Logger::Create(logPrefix_);
static std::shared_ptr<settings::GeneralSettings> generalSettings_ = nullptr; static std::shared_ptr<settings::GeneralSettings> generalSettings_ = nullptr;
static std::shared_ptr<settings::PaletteSettings> paletteSettings_ = nullptr; static std::shared_ptr<settings::PaletteSettings> paletteSettings_ = nullptr;
@ -37,9 +37,8 @@ void Initialize()
{ {
if (!std::filesystem::create_directories(appDataPath)) if (!std::filesystem::create_directories(appDataPath))
{ {
BOOST_LOG_TRIVIAL(error) logger_->error("Unable to create application data directory: \"{}\"",
<< logPrefix_ << "Unable to create application data directory: \"" appDataPath);
<< appDataPath << "\"";
} }
} }
@ -97,7 +96,7 @@ static boost::json::value ConvertSettingsToJson()
static void GenerateDefaultSettings() static void GenerateDefaultSettings()
{ {
BOOST_LOG_TRIVIAL(info) << logPrefix_ << "Generating default settings"; logger_->info("Generating default settings");
generalSettings_ = settings::GeneralSettings::Create(); generalSettings_ = settings::GeneralSettings::Create();
paletteSettings_ = settings::PaletteSettings::Create(); paletteSettings_ = settings::PaletteSettings::Create();
@ -105,7 +104,7 @@ static void GenerateDefaultSettings()
static bool LoadSettings(const boost::json::object& settingsJson) static bool LoadSettings(const boost::json::object& settingsJson)
{ {
BOOST_LOG_TRIVIAL(info) << logPrefix_ << "Loading settings"; logger_->info("Loading settings");
bool jsonDirty = false; bool jsonDirty = false;

View file

@ -1,7 +1,7 @@
#include <scwx/qt/map/color_table_layer.hpp> #include <scwx/qt/map/color_table_layer.hpp>
#include <scwx/qt/gl/shader_program.hpp> #include <scwx/qt/gl/shader_program.hpp>
#include <scwx/util/logger.hpp>
#include <boost/log/trivial.hpp>
#include <glm/glm.hpp> #include <glm/glm.hpp>
#include <glm/gtc/type_ptr.hpp> #include <glm/gtc/type_ptr.hpp>
@ -12,7 +12,8 @@ namespace qt
namespace map namespace map
{ {
static const std::string logPrefix_ = "[scwx::qt::map::color_table_layer] "; static const std::string logPrefix_ = "scwx::qt::map::color_table_layer";
static const auto logger_ = scwx::util::Logger::Create(logPrefix_);
class ColorTableLayerImpl class ColorTableLayerImpl
{ {
@ -47,7 +48,7 @@ ColorTableLayer::~ColorTableLayer() = default;
void ColorTableLayer::Initialize() void ColorTableLayer::Initialize()
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Initialize()"; logger_->debug("Initialize()");
gl::OpenGLFunctions& gl = context()->gl_; gl::OpenGLFunctions& gl = context()->gl_;
@ -58,7 +59,7 @@ void ColorTableLayer::Initialize()
gl.glGetUniformLocation(p->shaderProgram_.id(), "uMVPMatrix"); gl.glGetUniformLocation(p->shaderProgram_.id(), "uMVPMatrix");
if (p->uMVPMatrixLocation_ == -1) if (p->uMVPMatrixLocation_ == -1)
{ {
BOOST_LOG_TRIVIAL(warning) << logPrefix_ << "Could not find uMVPMatrix"; logger_->warn("Could not find uMVPMatrix");
} }
gl.glGenTextures(1, &p->texture_); gl.glGenTextures(1, &p->texture_);
@ -170,7 +171,7 @@ void ColorTableLayer::Render(const QMapbox::CustomLayerRenderParameters& params)
void ColorTableLayer::Deinitialize() void ColorTableLayer::Deinitialize()
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Deinitialize()"; logger_->debug("Deinitialize()");
gl::OpenGLFunctions& gl = context()->gl_; gl::OpenGLFunctions& gl = context()->gl_;

View file

@ -1,7 +1,7 @@
#include <scwx/qt/map/draw_layer.hpp> #include <scwx/qt/map/draw_layer.hpp>
#include <scwx/qt/gl/shader_program.hpp> #include <scwx/qt/gl/shader_program.hpp>
#include <scwx/util/logger.hpp>
#include <boost/log/trivial.hpp>
#include <glm/glm.hpp> #include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp> #include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/type_ptr.hpp> #include <glm/gtc/type_ptr.hpp>
@ -13,7 +13,8 @@ namespace qt
namespace map namespace map
{ {
static const std::string logPrefix_ = "[scwx::qt::map::draw_layer] "; static const std::string logPrefix_ = "scwx::qt::map::draw_layer";
static const auto logger_ = scwx::util::Logger::Create(logPrefix_);
class DrawLayerImpl class DrawLayerImpl
{ {
@ -47,7 +48,7 @@ void DrawLayer::Initialize()
gl.glGetUniformLocation(p->shaderProgram_.id(), "uMVPMatrix"); gl.glGetUniformLocation(p->shaderProgram_.id(), "uMVPMatrix");
if (p->uMVPMatrixLocation_ == -1) if (p->uMVPMatrixLocation_ == -1)
{ {
BOOST_LOG_TRIVIAL(warning) << logPrefix_ << "Could not find uMVPMatrix"; logger_->warn("Could not find uMVPMatrix");
} }
p->shaderProgram_.Use(); p->shaderProgram_.Use();

View file

@ -8,6 +8,7 @@
#include <scwx/qt/map/radar_product_layer.hpp> #include <scwx/qt/map/radar_product_layer.hpp>
#include <scwx/qt/map/radar_range_layer.hpp> #include <scwx/qt/map/radar_range_layer.hpp>
#include <scwx/qt/view/radar_product_view_factory.hpp> #include <scwx/qt/view/radar_product_view_factory.hpp>
#include <scwx/util/logger.hpp>
#include <scwx/util/threads.hpp> #include <scwx/util/threads.hpp>
#include <scwx/util/time.hpp> #include <scwx/util/time.hpp>
@ -20,8 +21,6 @@
#include <QMouseEvent> #include <QMouseEvent>
#include <QString> #include <QString>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace qt namespace qt
@ -29,7 +28,8 @@ namespace qt
namespace map namespace map
{ {
static const std::string logPrefix_ = "[scwx::qt::map::map_widget] "; static const std::string logPrefix_ = "scwx::qt::map::map_widget";
static const auto logger_ = scwx::util::Logger::Create(logPrefix_);
typedef std::pair<std::string, std::string> MapStyle; typedef std::pair<std::string, std::string> MapStyle;
@ -309,10 +309,11 @@ void MapWidget::SelectRadarProduct(
productCode = level3File->message()->header().message_code(); productCode = level3File->message()->header().message_code();
} }
BOOST_LOG_TRIVIAL(debug) logger_->debug("SelectRadarProduct: {}, {}, {}, {}",
<< logPrefix_ << "SelectRadarProduct(" << radarId << ", " radarId,
<< common::GetRadarProductGroupName(group) << ", " << product << ", " common::GetRadarProductGroupName(group),
<< util::TimeString(time) << ")"; product,
util::TimeString(time));
if (group == common::RadarProductGroup::Level2) if (group == common::RadarProductGroup::Level2)
{ {
@ -335,8 +336,7 @@ void MapWidget::SelectRadarProduct(
if (radarProductView == nullptr) if (radarProductView == nullptr)
{ {
BOOST_LOG_TRIVIAL(debug) logger_->debug("No view created for product");
<< logPrefix_ << "No view created for product";
return; return;
} }

View file

@ -3,6 +3,7 @@
#include <scwx/qt/gl/shader_program.hpp> #include <scwx/qt/gl/shader_program.hpp>
#include <scwx/qt/gl/text_shader.hpp> #include <scwx/qt/gl/text_shader.hpp>
#include <scwx/qt/util/font.hpp> #include <scwx/qt/util/font.hpp>
#include <scwx/util/logger.hpp>
#include <scwx/util/time.hpp> #include <scwx/util/time.hpp>
#include <chrono> #include <chrono>
@ -10,7 +11,6 @@
#include <boost/date_time.hpp> #include <boost/date_time.hpp>
#include <boost/date_time/local_time/local_time.hpp> #include <boost/date_time/local_time/local_time.hpp>
#include <boost/log/trivial.hpp>
#include <boost/timer/timer.hpp> #include <boost/timer/timer.hpp>
#include <GeographicLib/Geodesic.hpp> #include <GeographicLib/Geodesic.hpp>
#include <glm/glm.hpp> #include <glm/glm.hpp>
@ -25,7 +25,8 @@ namespace qt
namespace map namespace map
{ {
static const std::string logPrefix_ = "[scwx::qt::map::overlay_layer] "; static const std::string logPrefix_ = "scwx::qt::map::overlay_layer";
static const auto logger_ = scwx::util::Logger::Create(logPrefix_);
class OverlayLayerImpl class OverlayLayerImpl
{ {
@ -74,7 +75,7 @@ OverlayLayer::~OverlayLayer() = default;
void OverlayLayer::Initialize() void OverlayLayer::Initialize()
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Initialize()"; logger_->debug("Initialize()");
DrawLayer::Initialize(); DrawLayer::Initialize();
@ -154,7 +155,7 @@ void OverlayLayer::Render(const QMapbox::CustomLayerRenderParameters& params)
void OverlayLayer::Deinitialize() void OverlayLayer::Deinitialize()
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Deinitialize()"; logger_->debug("Deinitialize()");
DrawLayer::Deinitialize(); DrawLayer::Deinitialize();

View file

@ -1,9 +1,9 @@
#include <scwx/qt/map/radar_product_layer.hpp> #include <scwx/qt/map/radar_product_layer.hpp>
#include <scwx/qt/gl/shader_program.hpp> #include <scwx/qt/gl/shader_program.hpp>
#include <scwx/util/logger.hpp>
#include <execution> #include <execution>
#include <boost/log/trivial.hpp>
#include <boost/timer/timer.hpp> #include <boost/timer/timer.hpp>
#include <GeographicLib/Geodesic.hpp> #include <GeographicLib/Geodesic.hpp>
#include <glm/glm.hpp> #include <glm/glm.hpp>
@ -21,7 +21,8 @@ namespace map
static constexpr uint32_t MAX_RADIALS = 720; static constexpr uint32_t MAX_RADIALS = 720;
static constexpr uint32_t MAX_DATA_MOMENT_GATES = 1840; static constexpr uint32_t MAX_DATA_MOMENT_GATES = 1840;
static const std::string logPrefix_ = "[scwx::qt::map::radar_product_layer] "; static const std::string logPrefix_ = "scwx::qt::map::radar_product_layer";
static const auto logger_ = scwx::util::Logger::Create(logPrefix_);
static glm::vec2 static glm::vec2
LatLongToScreenCoordinate(const QMapbox::Coordinate& coordinate); LatLongToScreenCoordinate(const QMapbox::Coordinate& coordinate);
@ -73,7 +74,7 @@ RadarProductLayer::~RadarProductLayer() = default;
void RadarProductLayer::Initialize() void RadarProductLayer::Initialize()
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Initialize()"; logger_->debug("Initialize()");
gl::OpenGLFunctions& gl = context()->gl_; gl::OpenGLFunctions& gl = context()->gl_;
@ -84,38 +85,35 @@ void RadarProductLayer::Initialize()
gl.glGetUniformLocation(p->shaderProgram_.id(), "uMVPMatrix"); gl.glGetUniformLocation(p->shaderProgram_.id(), "uMVPMatrix");
if (p->uMVPMatrixLocation_ == -1) if (p->uMVPMatrixLocation_ == -1)
{ {
BOOST_LOG_TRIVIAL(warning) << logPrefix_ << "Could not find uMVPMatrix"; logger_->warn("Could not find uMVPMatrix");
} }
p->uMapScreenCoordLocation_ = p->uMapScreenCoordLocation_ =
gl.glGetUniformLocation(p->shaderProgram_.id(), "uMapScreenCoord"); gl.glGetUniformLocation(p->shaderProgram_.id(), "uMapScreenCoord");
if (p->uMapScreenCoordLocation_ == -1) if (p->uMapScreenCoordLocation_ == -1)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Could not find uMapScreenCoord");
<< logPrefix_ << "Could not find uMapScreenCoord";
} }
p->uDataMomentOffsetLocation_ = p->uDataMomentOffsetLocation_ =
gl.glGetUniformLocation(p->shaderProgram_.id(), "uDataMomentOffset"); gl.glGetUniformLocation(p->shaderProgram_.id(), "uDataMomentOffset");
if (p->uDataMomentOffsetLocation_ == -1) if (p->uDataMomentOffsetLocation_ == -1)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Could not find uDataMomentOffset");
<< logPrefix_ << "Could not find uDataMomentOffset";
} }
p->uDataMomentScaleLocation_ = p->uDataMomentScaleLocation_ =
gl.glGetUniformLocation(p->shaderProgram_.id(), "uDataMomentScale"); gl.glGetUniformLocation(p->shaderProgram_.id(), "uDataMomentScale");
if (p->uDataMomentScaleLocation_ == -1) if (p->uDataMomentScaleLocation_ == -1)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Could not find uDataMomentScale");
<< logPrefix_ << "Could not find uDataMomentScale";
} }
p->uCFPEnabledLocation_ = p->uCFPEnabledLocation_ =
gl.glGetUniformLocation(p->shaderProgram_.id(), "uCFPEnabled"); gl.glGetUniformLocation(p->shaderProgram_.id(), "uCFPEnabled");
if (p->uCFPEnabledLocation_ == -1) if (p->uCFPEnabledLocation_ == -1)
{ {
BOOST_LOG_TRIVIAL(warning) << logPrefix_ << "Could not find uCFPEnabled"; logger_->warn("Could not find uCFPEnabled");
} }
p->shaderProgram_.Use(); p->shaderProgram_.Use();
@ -148,7 +146,7 @@ void RadarProductLayer::Initialize()
void RadarProductLayer::UpdateSweep() void RadarProductLayer::UpdateSweep()
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "UpdateSweep()"; logger_->debug("UpdateSweep()");
gl::OpenGLFunctions& gl = context()->gl_; gl::OpenGLFunctions& gl = context()->gl_;
@ -161,8 +159,7 @@ void RadarProductLayer::UpdateSweep()
std::try_to_lock); std::try_to_lock);
if (!sweepLock.owns_lock()) if (!sweepLock.owns_lock())
{ {
BOOST_LOG_TRIVIAL(debug) logger_->debug("Sweep locked, deferring update");
<< logPrefix_ << "Sweep locked, deferring update";
return; return;
} }
@ -181,8 +178,7 @@ void RadarProductLayer::UpdateSweep()
vertices.data(), vertices.data(),
GL_STATIC_DRAW); GL_STATIC_DRAW);
timer.stop(); timer.stop();
BOOST_LOG_TRIVIAL(debug) logger_->debug("Vertices buffered in {}", timer.format(6, "%ws"));
<< logPrefix_ << "Vertices buffered in " << timer.format(6, "%ws");
gl.glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, static_cast<void*>(0)); gl.glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, static_cast<void*>(0));
gl.glEnableVertexAttribArray(0); gl.glEnableVertexAttribArray(0);
@ -208,8 +204,7 @@ void RadarProductLayer::UpdateSweep()
timer.start(); timer.start();
gl.glBufferData(GL_ARRAY_BUFFER, dataSize, data, GL_STATIC_DRAW); gl.glBufferData(GL_ARRAY_BUFFER, dataSize, data, GL_STATIC_DRAW);
timer.stop(); timer.stop();
BOOST_LOG_TRIVIAL(debug) logger_->debug("Data moments buffered in {}", timer.format(6, "%ws"));
<< logPrefix_ << "Data moments buffered in " << timer.format(6, "%ws");
gl.glVertexAttribIPointer(1, 1, type, 0, static_cast<void*>(0)); gl.glVertexAttribIPointer(1, 1, type, 0, static_cast<void*>(0));
gl.glEnableVertexAttribArray(1); gl.glEnableVertexAttribArray(1);
@ -238,8 +233,7 @@ void RadarProductLayer::UpdateSweep()
timer.start(); timer.start();
gl.glBufferData(GL_ARRAY_BUFFER, cfpDataSize, cfpData, GL_STATIC_DRAW); gl.glBufferData(GL_ARRAY_BUFFER, cfpDataSize, cfpData, GL_STATIC_DRAW);
timer.stop(); timer.stop();
BOOST_LOG_TRIVIAL(debug) logger_->debug("CFP moments buffered in {}", timer.format(6, "%ws"));
<< logPrefix_ << "CFP moments buffered in " << timer.format(6, "%ws");
gl.glVertexAttribIPointer(2, 1, cfpType, 0, static_cast<void*>(0)); gl.glVertexAttribIPointer(2, 1, cfpType, 0, static_cast<void*>(0));
gl.glEnableVertexAttribArray(2); gl.glEnableVertexAttribArray(2);
@ -294,11 +288,13 @@ void RadarProductLayer::Render(
gl.glBindTexture(GL_TEXTURE_1D, p->texture_); gl.glBindTexture(GL_TEXTURE_1D, p->texture_);
gl.glBindVertexArray(p->vao_); gl.glBindVertexArray(p->vao_);
gl.glDrawArrays(GL_TRIANGLES, 0, p->numVertices_); gl.glDrawArrays(GL_TRIANGLES, 0, p->numVertices_);
SCWX_GL_CHECK_ERROR();
} }
void RadarProductLayer::Deinitialize() void RadarProductLayer::Deinitialize()
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Deinitialize()"; logger_->debug("Deinitialize()");
gl::OpenGLFunctions& gl = context()->gl_; gl::OpenGLFunctions& gl = context()->gl_;
@ -317,7 +313,7 @@ void RadarProductLayer::Deinitialize()
void RadarProductLayer::UpdateColorTable() void RadarProductLayer::UpdateColorTable()
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "UpdateColorTable()"; logger_->debug("UpdateColorTable()");
p->colorTableNeedsUpdate_ = false; p->colorTableNeedsUpdate_ = false;

View file

@ -1,6 +1,6 @@
#include <scwx/qt/map/radar_range_layer.hpp> #include <scwx/qt/map/radar_range_layer.hpp>
#include <scwx/util/logger.hpp>
#include <boost/log/trivial.hpp>
#include <GeographicLib/Geodesic.hpp> #include <GeographicLib/Geodesic.hpp>
#include <glm/glm.hpp> #include <glm/glm.hpp>
@ -11,7 +11,8 @@ namespace qt
namespace map namespace map
{ {
static const std::string logPrefix_ = "[scwx::qt::map::radar_range_layer] "; static const std::string logPrefix_ = "scwx::qt::map::radar_range_layer";
static const auto logger_ = scwx::util::Logger::Create(logPrefix_);
static std::shared_ptr<QMapbox::Feature> static std::shared_ptr<QMapbox::Feature>
GetRangeCircle(float range, QMapbox::Coordinate center); GetRangeCircle(float range, QMapbox::Coordinate center);
@ -21,7 +22,7 @@ void RadarRangeLayer::Add(std::shared_ptr<QMapboxGL> map,
QMapbox::Coordinate center, QMapbox::Coordinate center,
const QString& before) const QString& before)
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Add()"; logger_->debug("Add()");
if (map->layerExists("rangeCircleLayer")) if (map->layerExists("rangeCircleLayer"))
{ {

View file

@ -1,7 +1,5 @@
#include <scwx/qt/request/nexrad_file_request.hpp> #include <scwx/qt/request/nexrad_file_request.hpp>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace qt namespace qt
@ -9,8 +7,7 @@ namespace qt
namespace request namespace request
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ = "scwx::qt::request::nexrad_file_request";
"[scwx::qt::request::nexrad_file_request] ";
class NexradFileRequestImpl class NexradFileRequestImpl
{ {

View file

@ -1,7 +1,6 @@
#include <scwx/qt/settings/general_settings.hpp> #include <scwx/qt/settings/general_settings.hpp>
#include <scwx/qt/util/json.hpp> #include <scwx/qt/util/json.hpp>
#include <scwx/util/logger.hpp>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
@ -10,7 +9,8 @@ namespace qt
namespace settings namespace settings
{ {
static const std::string logPrefix_ = "[scwx::qt::settings::general_settings] "; static const std::string logPrefix_ = "scwx::qt::settings::general_settings";
static const auto logger_ = scwx::util::Logger::Create(logPrefix_);
static const std::string DEFAULT_DEFAULT_RADAR_SITE = "KLSX"; static const std::string DEFAULT_DEFAULT_RADAR_SITE = "KLSX";
static const int64_t DEFAULT_GRID_WIDTH = 1; static const int64_t DEFAULT_GRID_WIDTH = 1;
@ -115,13 +115,11 @@ GeneralSettings::Load(const boost::json::value* json, bool& jsonDirty)
{ {
if (json == nullptr) if (json == nullptr)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Key is not present, resetting to defaults");
<< logPrefix_ << "Key is not present, resetting to defaults";
} }
else if (!json->is_object()) else if (!json->is_object())
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid json, resetting to defaults");
<< logPrefix_ << "Invalid json, resetting to defaults";
} }
generalSettings->p->SetDefaults(); generalSettings->p->SetDefaults();

View file

@ -1,7 +1,6 @@
#include <scwx/qt/settings/palette_settings.hpp> #include <scwx/qt/settings/palette_settings.hpp>
#include <scwx/qt/util/json.hpp> #include <scwx/qt/util/json.hpp>
#include <scwx/util/logger.hpp>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
@ -10,7 +9,8 @@ namespace qt
namespace settings namespace settings
{ {
static const std::string logPrefix_ = "[scwx::qt::settings::palette_settings] "; static const std::string logPrefix_ = "scwx::qt::settings::palette_settings";
static const auto logger_ = scwx::util::Logger::Create(logPrefix_);
static const std::vector<std::string> paletteNames_ = { static const std::vector<std::string> paletteNames_ = {
// Level 2 / Common Products // Level 2 / Common Products
@ -125,13 +125,11 @@ PaletteSettings::Load(const boost::json::value* json, bool& jsonDirty)
{ {
if (json == nullptr) if (json == nullptr)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Key is not present, resetting to defaults");
<< logPrefix_ << "Key is not present, resetting to defaults";
} }
else if (!json->is_object()) else if (!json->is_object())
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid json, resetting to defaults");
<< logPrefix_ << "Invalid json, resetting to defaults";
} }
generalSettings->p->SetDefaults(); generalSettings->p->SetDefaults();

View file

@ -3,8 +3,6 @@
#include <scwx/common/sites.hpp> #include <scwx/common/sites.hpp>
#include <scwx/util/time.hpp> #include <scwx/util/time.hpp>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace qt namespace qt
@ -12,8 +10,7 @@ namespace qt
namespace types namespace types
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ = "scwx::qt::types::radar_product_record";
"[scwx::qt::types::radar_product_record] ";
class RadarProductRecordImpl class RadarProductRecordImpl
{ {

View file

@ -2,11 +2,11 @@
#define _SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING #define _SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING
#include <scwx/qt/util/font.hpp> #include <scwx/qt/util/font.hpp>
#include <scwx/util/logger.hpp>
#include <codecvt> #include <codecvt>
#include <unordered_map> #include <unordered_map>
#include <boost/log/trivial.hpp>
#include <boost/timer/timer.hpp> #include <boost/timer/timer.hpp>
#include <QFile> #include <QFile>
#include <QFileInfo> #include <QFileInfo>
@ -76,7 +76,8 @@ static const std::string CODEPOINTS =
"@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_" "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_"
"`abcdefghijklmnopqrstuvwxyz{|}~"; "`abcdefghijklmnopqrstuvwxyz{|}~";
static const std::string logPrefix_ = "[scwx::qt::util::font] "; static const std::string logPrefix_ = "scwx::qt::util::font";
static const auto logger_ = scwx::util::Logger::Create(logPrefix_);
static constexpr float BASE_POINT_SIZE = 72.0f; static constexpr float BASE_POINT_SIZE = 72.0f;
static constexpr float POINT_SCALE = 1.0f / BASE_POINT_SIZE; static constexpr float POINT_SCALE = 1.0f / BASE_POINT_SIZE;
@ -144,9 +145,8 @@ float Font::BufferText(std::shared_ptr<FontBuffer> buffer,
auto it = p->glyphs_.find(c); auto it = p->glyphs_.find(c);
if (it == p->glyphs_.end()) if (it == p->glyphs_.end())
{ {
BOOST_LOG_TRIVIAL(info) logger_->info("Could not draw character: {}",
<< logPrefix_ static_cast<uint32_t>(c));
<< "Could not draw character: " << static_cast<uint32_t>(c);
continue; continue;
} }
@ -198,9 +198,7 @@ float Font::TextLength(const std::string& text, float pointSize) const
auto it = p->glyphs_.find(c); auto it = p->glyphs_.find(c);
if (it == p->glyphs_.end()) if (it == p->glyphs_.end())
{ {
BOOST_LOG_TRIVIAL(info) logger_->info("Character not found: {}", static_cast<uint32_t>(c));
<< logPrefix_
<< "Character not found: " << static_cast<uint32_t>(c);
continue; continue;
} }
@ -242,7 +240,7 @@ GLuint Font::GenerateTexture(gl::OpenGLFunctions& gl)
std::shared_ptr<Font> Font::Create(const std::string& resource) std::shared_ptr<Font> Font::Create(const std::string& resource)
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Loading font file: " << resource; logger_->debug("Loading font file: {}", resource);
std::shared_ptr<Font> font = nullptr; std::shared_ptr<Font> font = nullptr;
boost::timer::cpu_timer timer; boost::timer::cpu_timer timer;
@ -250,7 +248,7 @@ std::shared_ptr<Font> Font::Create(const std::string& resource)
auto it = fontMap_.find(resource); auto it = fontMap_.find(resource);
if (it != fontMap_.end()) if (it != fontMap_.end())
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Font already created"; logger_->debug("Font already created");
return it->second; return it->second;
} }
@ -258,7 +256,7 @@ std::shared_ptr<Font> Font::Create(const std::string& resource)
fontFile.open(QIODevice::ReadOnly); fontFile.open(QIODevice::ReadOnly);
if (!fontFile.isOpen()) if (!fontFile.isOpen())
{ {
BOOST_LOG_TRIVIAL(error) << logPrefix_ << "Could not read font file"; logger_->error("Could not read font file");
return font; return font;
} }
@ -298,8 +296,7 @@ std::shared_ptr<Font> Font::Create(const std::string& resource)
} }
} }
BOOST_LOG_TRIVIAL(debug) logger_->debug("Font loaded in {}", timer.format(6, "%ws"));
<< logPrefix_ << "Font loaded in " << timer.format(6, "%ws");
texture_font_delete(textureFont); texture_font_delete(textureFont);
@ -337,9 +334,8 @@ void FontImpl::ParseNames(FT_Face face)
} }
} }
BOOST_LOG_TRIVIAL(debug) logger_->debug(
<< logPrefix_ << "Font family: " << fontData_.fontFamily_ << " (" "Font family: {} ({})", fontData_.fontFamily_, fontData_.fontSubfamily_);
<< fontData_.fontSubfamily_ << ")";
} }
static void ParseSfntName(const FT_SfntName& sfntName, std::string& str) static void ParseSfntName(const FT_SfntName& sfntName, std::string& str)

View file

@ -1,9 +1,8 @@
#include <scwx/qt/util/font_buffer.hpp> #include <scwx/qt/util/font_buffer.hpp>
#include <scwx/util/logger.hpp>
#include <mutex> #include <mutex>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace qt namespace qt
@ -11,7 +10,8 @@ namespace qt
namespace util namespace util
{ {
static const std::string logPrefix_ = "[scwx::qt::util::font_buffer] "; static const std::string logPrefix_ = "scwx::qt::util::font_buffer";
static const auto logger_ = scwx::util::Logger::Create(logPrefix_);
class FontBufferImpl class FontBufferImpl
{ {
@ -140,8 +140,7 @@ void FontBuffer::Push(std::initializer_list<GLuint> indices,
{ {
if (indices.size() % 3 != 0 || vertices.size() % 9 != 0) if (indices.size() % 3 != 0 || vertices.size() % 9 != 0)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid push arguments, ignoring");
<< logPrefix_ << "Invalid push arguments, ignoring";
return; return;
} }

View file

@ -1,8 +1,8 @@
#include <scwx/qt/util/json.hpp> #include <scwx/qt/util/json.hpp>
#include <scwx/util/logger.hpp>
#include <fstream> #include <fstream>
#include <boost/log/trivial.hpp>
#include <QFile> #include <QFile>
#include <QTextStream> #include <QTextStream>
@ -15,7 +15,8 @@ namespace util
namespace json namespace json
{ {
static const std::string logPrefix_ = "[scwx::qt::util::json] "; static const std::string logPrefix_ = "scwx::qt::util::json";
static const auto logger_ = scwx::util::Logger::Create(logPrefix_);
/* Adapted from: /* Adapted from:
* https://www.boost.org/doc/libs/1_77_0/libs/json/doc/html/json/examples.html#json.examples.pretty * https://www.boost.org/doc/libs/1_77_0/libs/json/doc/html/json/examples.html#json.examples.pretty
@ -50,16 +51,18 @@ bool FromJsonInt64(const boost::json::object& json,
if (minValue.has_value() && value < *minValue) if (minValue.has_value() && value < *minValue)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("{} less than minimum ({} < {}), setting to: {2}",
<< logPrefix_ << key << " less than minimum (" << value << " < " key,
<< *minValue << "), setting to: " << *minValue; value,
*minValue);
value = *minValue; value = *minValue;
} }
else if (maxValue.has_value() && value > *maxValue) else if (maxValue.has_value() && value > *maxValue)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("{} greater than maximum ({} > {}), setting to: {2}",
<< logPrefix_ << key << " greater than maximum (" << value key,
<< " > " << *maxValue << "), setting to: " << *maxValue; value,
*maxValue);
value = *maxValue; value = *maxValue;
} }
else else
@ -69,17 +72,17 @@ bool FromJsonInt64(const boost::json::object& json,
} }
else else
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("{} is not an int64 ({}), setting to default: {}",
<< logPrefix_ << key << " is not an int64 (" << jv->kind() key,
<< "), setting to default:" << defaultValue; jv->kind(),
defaultValue);
value = defaultValue; value = defaultValue;
} }
} }
else else
{ {
BOOST_LOG_TRIVIAL(debug) logger_->debug(
<< logPrefix_ << key "{} is not present, setting to default: {}", key, defaultValue);
<< " is not present, setting to default: " << defaultValue;
value = defaultValue; value = defaultValue;
} }
@ -103,17 +106,15 @@ bool FromJsonString(const boost::json::object& json,
} }
else else
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn(
<< logPrefix_ << key "{} is not a string, setting to default: {}", key, defaultValue);
<< " is not a string, setting to default: " << defaultValue;
value = defaultValue; value = defaultValue;
} }
} }
else else
{ {
BOOST_LOG_TRIVIAL(debug) logger_->debug(
<< logPrefix_ << key "{} is not present, setting to default: {}", key, defaultValue);
<< " is not present, setting to default: " << defaultValue;
value = defaultValue; value = defaultValue;
} }
@ -156,9 +157,8 @@ static boost::json::value ReadJsonFile(QFile& file)
} }
else else
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Could not open file for reading: \"{}\"",
<< logPrefix_ << "Could not open file for reading: \"" file.fileName().toStdString());
<< file.fileName().toStdString() << "\"";
} }
return json; return json;
@ -176,7 +176,7 @@ static boost::json::value ReadJsonStream(std::istream& is)
p.write(line, ec); p.write(line, ec);
if (ec) if (ec)
{ {
BOOST_LOG_TRIVIAL(warning) << logPrefix_ << ec.message(); logger_->warn("{}", ec.message());
return nullptr; return nullptr;
} }
} }
@ -184,7 +184,7 @@ static boost::json::value ReadJsonStream(std::istream& is)
p.finish(ec); p.finish(ec);
if (ec) if (ec)
{ {
BOOST_LOG_TRIVIAL(warning) << logPrefix_ << ec.message(); logger_->warn("{}", ec.message());
return nullptr; return nullptr;
} }
@ -199,8 +199,7 @@ void WriteJsonFile(const std::string& path,
if (!ofs.is_open()) if (!ofs.is_open())
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Cannot write JSON file: \"{}\"", path);
<< logPrefix_ << "Cannot write JSON file: \"" << path << "\"";
} }
else else
{ {
@ -277,11 +276,17 @@ static void PrettyPrintJson(std::ostream& os,
break; break;
} }
case boost::json::kind::uint64: os << jv.get_uint64(); break; case boost::json::kind::uint64:
os << jv.get_uint64();
break;
case boost::json::kind::int64: os << jv.get_int64(); break; case boost::json::kind::int64:
os << jv.get_int64();
break;
case boost::json::kind::double_: os << jv.get_double(); break; case boost::json::kind::double_:
os << jv.get_double();
break;
case boost::json::kind::bool_: case boost::json::kind::bool_:
if (jv.get_bool()) if (jv.get_bool())
@ -290,7 +295,9 @@ static void PrettyPrintJson(std::ostream& os,
os << "false"; os << "false";
break; break;
case boost::json::kind::null: os << "null"; break; case boost::json::kind::null:
os << "null";
break;
} }
if (indent->empty()) if (indent->empty())

View file

@ -1,9 +1,9 @@
#include <scwx/qt/view/level2_product_view.hpp> #include <scwx/qt/view/level2_product_view.hpp>
#include <scwx/common/constants.hpp> #include <scwx/common/constants.hpp>
#include <scwx/util/logger.hpp>
#include <scwx/util/threads.hpp> #include <scwx/util/threads.hpp>
#include <scwx/util/time.hpp> #include <scwx/util/time.hpp>
#include <boost/log/trivial.hpp>
#include <boost/range/irange.hpp> #include <boost/range/irange.hpp>
#include <boost/timer/timer.hpp> #include <boost/timer/timer.hpp>
@ -14,7 +14,8 @@ namespace qt
namespace view namespace view
{ {
static const std::string logPrefix_ = "[scwx::qt::view::level2_product_view] "; static const std::string logPrefix_ = "scwx::qt::view::level2_product_view";
static const auto logger_ = scwx::util::Logger::Create(logPrefix_);
static constexpr uint16_t RANGE_FOLDED = 1u; static constexpr uint16_t RANGE_FOLDED = 1u;
static constexpr uint32_t VERTICES_PER_BIN = 6u; static constexpr uint32_t VERTICES_PER_BIN = 6u;
@ -73,8 +74,8 @@ public:
} }
else else
{ {
BOOST_LOG_TRIVIAL(warning) << logPrefix_ << "Unknown product: \"" logger_->warn("Unknown product: \"{}\"",
<< common::GetLevel2Name(product) << "\""; common::GetLevel2Name(product));
dataBlockType_ = wsr88d::rda::DataBlockType::Unknown; dataBlockType_ = wsr88d::rda::DataBlockType::Unknown;
} }
} }
@ -347,7 +348,7 @@ void Level2ProductView::UpdateColorTable()
void Level2ProductView::ComputeSweep() void Level2ProductView::ComputeSweep()
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "ComputeSweep()"; logger_->debug("ComputeSweep()");
boost::timer::cpu_timer timer; boost::timer::cpu_timer timer;
@ -382,8 +383,8 @@ void Level2ProductView::ComputeSweep()
if (momentData0 == nullptr) if (momentData0 == nullptr)
{ {
BOOST_LOG_TRIVIAL(warning) << logPrefix_ << "No moment data for " logger_->warn("No moment data for {}",
<< common::GetLevel2Name(p->product_); common::GetLevel2Name(p->product_));
return; return;
} }
@ -462,8 +463,7 @@ void Level2ProductView::ComputeSweep()
if (momentData0->data_word_size() != momentData->data_word_size()) if (momentData0->data_word_size() != momentData->data_word_size())
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Radial {} has different word size", radial);
<< logPrefix_ << "Radial " << radial << " has different word size";
continue; continue;
} }
@ -632,8 +632,7 @@ void Level2ProductView::ComputeSweep()
} }
timer.stop(); timer.stop();
BOOST_LOG_TRIVIAL(debug) logger_->debug("Vertices calculated in {}", timer.format(6, "%ws"));
<< logPrefix_ << "Vertices calculated in " << timer.format(6, "%ws");
UpdateColorTable(); UpdateColorTable();

View file

@ -6,7 +6,6 @@
#include <scwx/wsr88d/rpg/graphic_product_message.hpp> #include <scwx/wsr88d/rpg/graphic_product_message.hpp>
#include <scwx/wsr88d/rpg/radial_data_packet.hpp> #include <scwx/wsr88d/rpg/radial_data_packet.hpp>
#include <boost/log/trivial.hpp>
#include <boost/range/irange.hpp> #include <boost/range/irange.hpp>
#include <boost/timer/timer.hpp> #include <boost/timer/timer.hpp>
@ -17,7 +16,7 @@ namespace qt
namespace view namespace view
{ {
static const std::string logPrefix_ = "[scwx::qt::view::level3_product_view] "; static const std::string logPrefix_ = "scwx::qt::view::level3_product_view";
static constexpr uint16_t RANGE_FOLDED = 1u; static constexpr uint16_t RANGE_FOLDED = 1u;

View file

@ -1,11 +1,11 @@
#include <scwx/qt/view/level3_radial_view.hpp> #include <scwx/qt/view/level3_radial_view.hpp>
#include <scwx/common/constants.hpp> #include <scwx/common/constants.hpp>
#include <scwx/util/logger.hpp>
#include <scwx/util/threads.hpp> #include <scwx/util/threads.hpp>
#include <scwx/util/time.hpp> #include <scwx/util/time.hpp>
#include <scwx/wsr88d/rpg/digital_radial_data_array_packet.hpp> #include <scwx/wsr88d/rpg/digital_radial_data_array_packet.hpp>
#include <scwx/wsr88d/rpg/radial_data_packet.hpp> #include <scwx/wsr88d/rpg/radial_data_packet.hpp>
#include <boost/log/trivial.hpp>
#include <boost/range/irange.hpp> #include <boost/range/irange.hpp>
#include <boost/timer/timer.hpp> #include <boost/timer/timer.hpp>
@ -16,7 +16,8 @@ namespace qt
namespace view namespace view
{ {
static const std::string logPrefix_ = "[scwx::qt::view::level3_radial_view] "; static const std::string logPrefix_ = "scwx::qt::view::level3_radial_view";
static const auto logger_ = scwx::util::Logger::Create(logPrefix_);
static constexpr uint16_t RANGE_FOLDED = 1u; static constexpr uint16_t RANGE_FOLDED = 1u;
static constexpr uint32_t VERTICES_PER_BIN = 6u; static constexpr uint32_t VERTICES_PER_BIN = 6u;
@ -105,7 +106,7 @@ void Level3RadialView::SelectTime(std::chrono::system_clock::time_point time)
void Level3RadialView::ComputeSweep() void Level3RadialView::ComputeSweep()
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "ComputeSweep()"; logger_->debug("ComputeSweep()");
boost::timer::cpu_timer timer; boost::timer::cpu_timer timer;
@ -120,8 +121,7 @@ void Level3RadialView::ComputeSweep()
std::dynamic_pointer_cast<wsr88d::rpg::GraphicProductMessage>(message); std::dynamic_pointer_cast<wsr88d::rpg::GraphicProductMessage>(message);
if (gpm == nullptr) if (gpm == nullptr)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Graphic Product Message not found");
<< logPrefix_ << "Graphic Product Message not found";
return; return;
} }
else if (gpm == graphic_product_message()) else if (gpm == graphic_product_message())
@ -139,7 +139,7 @@ void Level3RadialView::ComputeSweep()
gpm->symbology_block(); gpm->symbology_block();
if (descriptionBlock == nullptr || symbologyBlock == nullptr) if (descriptionBlock == nullptr || symbologyBlock == nullptr)
{ {
BOOST_LOG_TRIVIAL(warning) << logPrefix_ << "Missing blocks"; logger_->warn("Missing blocks");
return; return;
} }
@ -147,8 +147,7 @@ void Level3RadialView::ComputeSweep()
uint16_t numberOfLayers = symbologyBlock->number_of_layers(); uint16_t numberOfLayers = symbologyBlock->number_of_layers();
if (numberOfLayers < 1) if (numberOfLayers < 1)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("No layers present in symbology block");
<< logPrefix_ << "No layers present in symbology block";
return; return;
} }
@ -199,7 +198,7 @@ void Level3RadialView::ComputeSweep()
} }
else else
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "No radial data found"; logger_->debug("No radial data found");
return; return;
} }
@ -207,8 +206,7 @@ void Level3RadialView::ComputeSweep()
const size_t radials = radialData->number_of_radials(); const size_t radials = radialData->number_of_radials();
if (radials != 360 && radials != 720) if (radials != 360 && radials != 720)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Unsupported number of radials: {}", radials);
<< logPrefix_ << "Unsupported number of radials: " << radials;
return; return;
} }
@ -223,8 +221,7 @@ void Level3RadialView::ComputeSweep()
const uint16_t gates = radialData->number_of_range_bins(); const uint16_t gates = radialData->number_of_range_bins();
if (gates < 1) if (gates < 1)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("No range bins in radial data");
<< logPrefix_ << "No range bins in radial data";
return; return;
} }
@ -368,8 +365,7 @@ void Level3RadialView::ComputeSweep()
dataMoments8.shrink_to_fit(); dataMoments8.shrink_to_fit();
timer.stop(); timer.stop();
BOOST_LOG_TRIVIAL(debug) logger_->debug("Vertices calculated in {}", timer.format(6, "%ws"));
<< logPrefix_ << "Vertices calculated in " << timer.format(6, "%ws");
UpdateColorTable(); UpdateColorTable();

View file

@ -1,10 +1,10 @@
#include <scwx/qt/view/level3_raster_view.hpp> #include <scwx/qt/view/level3_raster_view.hpp>
#include <scwx/common/constants.hpp> #include <scwx/common/constants.hpp>
#include <scwx/util/logger.hpp>
#include <scwx/util/threads.hpp> #include <scwx/util/threads.hpp>
#include <scwx/util/time.hpp> #include <scwx/util/time.hpp>
#include <scwx/wsr88d/rpg/raster_data_packet.hpp> #include <scwx/wsr88d/rpg/raster_data_packet.hpp>
#include <boost/log/trivial.hpp>
#include <boost/range/irange.hpp> #include <boost/range/irange.hpp>
#include <boost/timer/timer.hpp> #include <boost/timer/timer.hpp>
#include <GeographicLib/Geodesic.hpp> #include <GeographicLib/Geodesic.hpp>
@ -16,7 +16,8 @@ namespace qt
namespace view namespace view
{ {
static const std::string logPrefix_ = "[scwx::qt::view::level3_raster_view] "; static const std::string logPrefix_ = "scwx::qt::view::level3_raster_view";
static const auto logger_ = scwx::util::Logger::Create(logPrefix_);
static constexpr uint16_t RANGE_FOLDED = 1u; static constexpr uint16_t RANGE_FOLDED = 1u;
static constexpr uint32_t VERTICES_PER_BIN = 6u; static constexpr uint32_t VERTICES_PER_BIN = 6u;
@ -105,7 +106,7 @@ void Level3RasterView::SelectTime(std::chrono::system_clock::time_point time)
void Level3RasterView::ComputeSweep() void Level3RasterView::ComputeSweep()
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "ComputeSweep()"; logger_->debug("ComputeSweep()");
boost::timer::cpu_timer timer; boost::timer::cpu_timer timer;
@ -120,8 +121,7 @@ void Level3RasterView::ComputeSweep()
std::dynamic_pointer_cast<wsr88d::rpg::GraphicProductMessage>(message); std::dynamic_pointer_cast<wsr88d::rpg::GraphicProductMessage>(message);
if (gpm == nullptr) if (gpm == nullptr)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Graphic Product Message not found");
<< logPrefix_ << "Graphic Product Message not found";
return; return;
} }
else if (gpm == graphic_product_message()) else if (gpm == graphic_product_message())
@ -139,7 +139,7 @@ void Level3RasterView::ComputeSweep()
gpm->symbology_block(); gpm->symbology_block();
if (descriptionBlock == nullptr || symbologyBlock == nullptr) if (descriptionBlock == nullptr || symbologyBlock == nullptr)
{ {
BOOST_LOG_TRIVIAL(warning) << logPrefix_ << "Missing blocks"; logger_->warn("Missing blocks");
return; return;
} }
@ -147,8 +147,7 @@ void Level3RasterView::ComputeSweep()
uint16_t numberOfLayers = symbologyBlock->number_of_layers(); uint16_t numberOfLayers = symbologyBlock->number_of_layers();
if (numberOfLayers < 1) if (numberOfLayers < 1)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("No layers present in symbology block");
<< logPrefix_ << "No layers present in symbology block";
return; return;
} }
@ -179,7 +178,7 @@ void Level3RasterView::ComputeSweep()
if (rasterData == nullptr) if (rasterData == nullptr)
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "No raster data found"; logger_->debug("No raster data found");
return; return;
} }
@ -193,7 +192,7 @@ void Level3RasterView::ComputeSweep()
if (maxColumns == 0) if (maxColumns == 0)
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "No raster bins found"; logger_->debug("No raster bins found");
return; return;
} }
@ -256,8 +255,7 @@ void Level3RasterView::ComputeSweep()
}); });
timer.stop(); timer.stop();
BOOST_LOG_TRIVIAL(debug) logger_->debug("Coordinates calculated in {}", timer.format(6, "%ws"));
<< logPrefix_ << "Coordinates calculated in " << timer.format(6, "%ws");
// Calculate vertices // Calculate vertices
timer.start(); timer.start();
@ -332,8 +330,7 @@ void Level3RasterView::ComputeSweep()
dataMoments8.shrink_to_fit(); dataMoments8.shrink_to_fit();
timer.stop(); timer.stop();
BOOST_LOG_TRIVIAL(debug) logger_->debug("Vertices calculated in {}", timer.format(6, "%ws"));
<< logPrefix_ << "Vertices calculated in " << timer.format(6, "%ws");
UpdateColorTable(); UpdateColorTable();

View file

@ -1,7 +1,7 @@
#include <scwx/qt/view/radar_product_view.hpp> #include <scwx/qt/view/radar_product_view.hpp>
#include <scwx/common/constants.hpp> #include <scwx/common/constants.hpp>
#include <scwx/util/logger.hpp>
#include <boost/log/trivial.hpp>
#include <boost/range/irange.hpp> #include <boost/range/irange.hpp>
#include <boost/timer/timer.hpp> #include <boost/timer/timer.hpp>
@ -12,7 +12,8 @@ namespace qt
namespace view namespace view
{ {
static const std::string logPrefix_ = "[scwx::qt::view::radar_product_view] "; static const std::string logPrefix_ = "scwx::qt::view::radar_product_view";
static const auto logger_ = scwx::util::Logger::Create(logPrefix_);
static const std::vector<boost::gil::rgba8_pixel_t> DEFAULT_COLOR_TABLE = { static const std::vector<boost::gil::rgba8_pixel_t> DEFAULT_COLOR_TABLE = {
boost::gil::rgba8_pixel_t(0, 128, 0, 255), boost::gil::rgba8_pixel_t(0, 128, 0, 255),
@ -102,7 +103,7 @@ RadarProductView::GetCfpMomentData() const
void RadarProductView::ComputeSweep() void RadarProductView::ComputeSweep()
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "ComputeSweep()"; logger_->debug("ComputeSweep()");
emit SweepComputed(); emit SweepComputed();
} }

View file

@ -2,11 +2,10 @@
#include <scwx/qt/view/level2_product_view.hpp> #include <scwx/qt/view/level2_product_view.hpp>
#include <scwx/qt/view/level3_radial_view.hpp> #include <scwx/qt/view/level3_radial_view.hpp>
#include <scwx/qt/view/level3_raster_view.hpp> #include <scwx/qt/view/level3_raster_view.hpp>
#include <scwx/util/logger.hpp>
#include <unordered_set> #include <unordered_set>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace qt namespace qt
@ -15,7 +14,8 @@ namespace view
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ =
"[scwx::qt::view::radar_product_view_factory] "; "scwx::qt::view::radar_product_view_factory";
static const auto logger_ = scwx::util::Logger::Create(logPrefix_);
typedef std::function<std::shared_ptr<RadarProductView>( typedef std::function<std::shared_ptr<RadarProductView>(
const std::string& productName, const std::string& productName,
@ -46,8 +46,7 @@ std::shared_ptr<RadarProductView> RadarProductViewFactory::Create(
if (product == common::Level2Product::Unknown) if (product == common::Level2Product::Unknown)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Unknown Level 2 radar product: {}", productName);
<< logPrefix_ << "Unknown Level 2 radar product: " << productName;
} }
else else
{ {
@ -67,9 +66,8 @@ std::shared_ptr<RadarProductView> RadarProductViewFactory::Create(
} }
else else
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Unknown radar product group: {}",
<< logPrefix_ << "Unknown radar product group: " common::GetRadarProductGroupName(productGroup));
<< common::GetRadarProductGroupName(productGroup);
} }
return view; return view;

View file

@ -102,7 +102,7 @@
<context> <context>
<name>scwx::qt::main::MainWindow</name> <name>scwx::qt::main::MainWindow</name>
<message> <message>
<location filename="../source/scwx/qt/main/main_window.cpp" line="279"/> <location filename="../source/scwx/qt/main/main_window.cpp" line="278"/>
<source>Unrecognized NEXRAD Product:</source> <source>Unrecognized NEXRAD Product:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View file

@ -2,14 +2,12 @@
#include <gtest/gtest.h> #include <gtest/gtest.h>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace awips namespace awips
{ {
static const std::string logPrefix_ = "[scwx::awips::coded_location.test] "; static const std::string logPrefix_ = "scwx::awips::coded_location.test";
TEST(CodedLocation, WFO100W) TEST(CodedLocation, WFO100W)
{ {

View file

@ -2,15 +2,13 @@
#include <gtest/gtest.h> #include <gtest/gtest.h>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace awips namespace awips
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ =
"[scwx::awips::coded_time_motion_location.test] "; "scwx::awips::coded_time_motion_location.test";
TEST(CodedTimeMotionLocation, LeadingZeroes) TEST(CodedTimeMotionLocation, LeadingZeroes)
{ {

View file

@ -2,14 +2,12 @@
#include <gtest/gtest.h> #include <gtest/gtest.h>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace awips namespace awips
{ {
static const std::string logPrefix_ = "[scwx::awips::pvtec.test] "; static const std::string logPrefix_ = "scwx::awips::pvtec.test";
std::pair<std::chrono::year_month_day, std::pair<std::chrono::year_month_day,
std::chrono::hh_mm_ss<std::chrono::minutes>> std::chrono::hh_mm_ss<std::chrono::minutes>>

View file

@ -2,14 +2,12 @@
#include <gtest/gtest.h> #include <gtest/gtest.h>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace awips namespace awips
{ {
static const std::string logPrefix_ = "[scwx::awips::text_product_file.test] "; static const std::string logPrefix_ = "scwx::awips::text_product_file.test";
class TextProductValidFileTest : public testing::TestWithParam<std::string> class TextProductValidFileTest : public testing::TestWithParam<std::string>
{ {

View file

@ -4,15 +4,12 @@
#include <gtest/gtest.h> #include <gtest/gtest.h>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ = "scwx::wsr88d::nexrad_file_factory.test";
"[scwx::wsr88d::nexrad_file_factory.test] ";
TEST(NexradFileFactory, Level2V06) TEST(NexradFileFactory, Level2V06)
{ {

View file

@ -1,12 +1,12 @@
#include <gtest/gtest.h> #include <scwx/util/logger.hpp>
#include <boost/log/expressions.hpp> #include <gtest/gtest.h>
#include <boost/log/trivial.hpp> #include <spdlog/spdlog.h>
int main(int argc, char** argv) int main(int argc, char** argv)
{ {
boost::log::core::get()->set_filter(boost::log::trivial::severity >= scwx::util::Logger::Initialize();
boost::log::trivial::debug); spdlog::set_level(spdlog::level::debug);
::testing::InitGoogleTest(&argc, argv); ::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS(); return RUN_ALL_TESTS();

View file

@ -54,11 +54,6 @@ endif()
target_compile_definitions(wxtest PRIVATE SCWX_TEST_DATA_DIR="${SCWX_DIR}/test/data") target_compile_definitions(wxtest PRIVATE SCWX_TEST_DATA_DIR="${SCWX_DIR}/test/data")
if (WIN32)
# For Boost::log
target_compile_definitions(wxtest PRIVATE BOOST_USE_WINAPI_VERSION=0x0601)
endif()
gtest_discover_tests(wxtest) gtest_discover_tests(wxtest)
target_link_libraries(wxtest GTest::gtest target_link_libraries(wxtest GTest::gtest

View file

@ -0,0 +1,20 @@
#pragma once
#include <memory>
#include <string>
#include <spdlog/logger.h>
namespace scwx
{
namespace util
{
namespace Logger
{
void Initialize();
std::shared_ptr<spdlog::logger> Create(const std::string& name);
} // namespace Logger
} // namespace util
} // namespace scwx

View file

@ -1,15 +1,15 @@
#include <scwx/awips/coded_location.hpp> #include <scwx/awips/coded_location.hpp>
#include <scwx/util/logger.hpp>
#include <sstream> #include <sstream>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace awips namespace awips
{ {
static const std::string logPrefix_ = "[scwx::awips::coded_location] "; static const std::string logPrefix_ = "scwx::awips::coded_location";
static const auto logger_ = util::Logger::Create(logPrefix_);
class CodedLocationImpl class CodedLocationImpl
{ {
@ -93,9 +93,8 @@ bool CodedLocation::Parse(const StringRange& lines, const std::string& wfo)
} }
catch (const std::exception& ex) catch (const std::exception& ex)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn(
<< logPrefix_ << "Invalid WFO location token: \"" << *token "Invalid WFO location token: \"{}\" ({})", *token, ex.what());
<< "\" (" << ex.what() << ")";
dataValid = false; dataValid = false;
break; break;
} }
@ -128,10 +127,8 @@ bool CodedLocation::Parse(const StringRange& lines, const std::string& wfo)
{ {
if (token->size() != 8) if (token->size() != 8)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid National Center LAT...LON format: \"{}\"",
<< logPrefix_ *token);
<< "Invalid National Center LAT...LON format: \"" << *token
<< "\"";
dataValid = false; dataValid = false;
break; break;
@ -147,9 +144,10 @@ bool CodedLocation::Parse(const StringRange& lines, const std::string& wfo)
} }
catch (const std::exception& ex) catch (const std::exception& ex)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn(
<< logPrefix_ << "Invalid National Center location token: \"" "Invalid National Center location token: \"{}\" ({})",
<< *token << "\" (" << ex.what() << ")"; *token,
ex.what());
dataValid = false; dataValid = false;
break; break;
} }
@ -174,18 +172,17 @@ bool CodedLocation::Parse(const StringRange& lines, const std::string& wfo)
{ {
if (tokenList.empty()) if (tokenList.empty())
{ {
BOOST_LOG_TRIVIAL(warning) << logPrefix_ << "LAT...LON not found"; logger_->warn("LAT...LON not found");
} }
else else
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Malformed LAT...LON tokens: (0: {}, size: {})",
<< logPrefix_ tokenList.at(0),
<< "Malformed LAT...LON tokens: (0: " << tokenList.at(0) tokenList.size());
<< ", size: " << tokenList.size() << ")";
for (const auto& token : tokenList) for (const auto& token : tokenList)
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << token; logger_->debug("{}", token);
} }
} }

View file

@ -4,18 +4,17 @@
#endif #endif
#include <scwx/awips/coded_time_motion_location.hpp> #include <scwx/awips/coded_time_motion_location.hpp>
#include <scwx/util/logger.hpp>
#include <sstream> #include <sstream>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace awips namespace awips
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ = "scwx::awips::coded_time_motion_location";
"[scwx::awips::coded_time_motion_location] "; static const auto logger_ = util::Logger::Create(logPrefix_);
class CodedTimeMotionLocationImpl class CodedTimeMotionLocationImpl
{ {
@ -111,8 +110,7 @@ bool CodedTimeMotionLocation::Parse(const StringRange& lines,
} }
else else
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid time: \"{}\"", time);
<< logPrefix_ << "Invalid time: \"" << time << "\"";
p->time_ = hh_mm_ss<minutes> {}; p->time_ = hh_mm_ss<minutes> {};
dataValid = false; dataValid = false;
} }
@ -129,16 +127,14 @@ bool CodedTimeMotionLocation::Parse(const StringRange& lines,
} }
catch (const std::exception& ex) catch (const std::exception& ex)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn(
<< logPrefix_ << "Invalid direction: \"" << direction << "\" (" "Invalid direction: \"{}\" ({})", direction, ex.what());
<< ex.what() << ")";
dataValid = false; dataValid = false;
} }
} }
else else
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid direction: \"{}\"", direction);
<< logPrefix_ << "Invalid direction: \"" << direction << "\"";
dataValid = false; dataValid = false;
} }
@ -153,15 +149,13 @@ bool CodedTimeMotionLocation::Parse(const StringRange& lines,
} }
catch (const std::exception& ex) catch (const std::exception& ex)
{ {
BOOST_LOG_TRIVIAL(warning) << logPrefix_ << "Invalid speed: \"" logger_->warn("Invalid speed: \"{}\" ({})", speed, ex.what());
<< speed << "\" (" << ex.what() << ")";
dataValid = false; dataValid = false;
} }
} }
else else
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid speed: \"{}\"", speed);
<< logPrefix_ << "Invalid speed: \"" << speed << "\"";
dataValid = false; dataValid = false;
} }
@ -180,9 +174,8 @@ bool CodedTimeMotionLocation::Parse(const StringRange& lines,
} }
catch (const std::exception& ex) catch (const std::exception& ex)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn(
<< logPrefix_ << "Invalid location token: \"" << *token << "\" (" "Invalid location token: \"{}\" ({})", *token, ex.what());
<< ex.what() << ")";
dataValid = false; dataValid = false;
break; break;
} }
@ -212,19 +205,17 @@ bool CodedTimeMotionLocation::Parse(const StringRange& lines,
{ {
if (tokenList.empty()) if (tokenList.empty())
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("TIME...MOT...LOC not found");
<< logPrefix_ << "TIME...MOT...LOC not found";
} }
else else
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Malformed TIME...MOT...LOC tokens: (0: {}, size: {})",
<< logPrefix_ tokenList.at(0),
<< "Malformed TIME...MOT...LOC tokens: (0: " << tokenList.at(0) tokenList.size());
<< ", size: " << tokenList.size() << ")";
for (const auto& token : tokenList) for (const auto& token : tokenList)
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << token; logger_->debug("{}", token);
} }
} }

View file

@ -1,13 +1,13 @@
#include <scwx/awips/message.hpp> #include <scwx/awips/message.hpp>
#include <scwx/util/logger.hpp>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace awips namespace awips
{ {
static const std::string logPrefix_ = "[scwx::awips::message] "; static const std::string logPrefix_ = "scwx::awips::message";
static const auto logger_ = util::Logger::Create(logPrefix_);
class MessageImpl class MessageImpl
{ {
@ -30,13 +30,12 @@ bool Message::ValidateMessage(std::istream& is, size_t bytesRead) const
if (is.eof()) if (is.eof())
{ {
BOOST_LOG_TRIVIAL(warning) << logPrefix_ << "Reached end of data stream"; logger_->warn("Reached end of data stream");
messageValid = false; messageValid = false;
} }
else if (is.fail()) else if (is.fail())
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Could not read from input stream");
<< logPrefix_ << "Could not read from input stream";
messageValid = false; messageValid = false;
} }
else if (bytesRead != dataSize) else if (bytesRead != dataSize)
@ -47,15 +46,15 @@ bool Message::ValidateMessage(std::istream& is, size_t bytesRead) const
if (bytesRead < dataSize) if (bytesRead < dataSize)
{ {
BOOST_LOG_TRIVIAL(trace) logger_->trace("Message contents smaller than size: {} < {} bytes",
<< logPrefix_ << "Message contents smaller than size: " << bytesRead bytesRead,
<< " < " << dataSize << " bytes"; dataSize);
} }
if (bytesRead > dataSize) if (bytesRead > dataSize)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Message contents larger than size: {} > {} bytes",
<< logPrefix_ << "Message contents larger than size: " << bytesRead bytesRead,
<< " > " << dataSize << " bytes"; dataSize);
messageValid = false; messageValid = false;
} }
} }

View file

@ -1,16 +1,17 @@
#include <scwx/awips/phenomenon.hpp> #include <scwx/awips/phenomenon.hpp>
#include <scwx/util/logger.hpp>
#include <boost/assign.hpp> #include <boost/assign.hpp>
#include <boost/bimap.hpp> #include <boost/bimap.hpp>
#include <boost/bimap/unordered_set_of.hpp> #include <boost/bimap/unordered_set_of.hpp>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace awips namespace awips
{ {
static const std::string logPrefix_ = "[scwx::awips::phenomenon] "; static const std::string logPrefix_ = "scwx::awips::phenomenon";
static const auto logger_ = util::Logger::Create(logPrefix_);
typedef boost::bimap<boost::bimaps::unordered_set_of<Phenomenon>, typedef boost::bimap<boost::bimaps::unordered_set_of<Phenomenon>,
boost::bimaps::unordered_set_of<std::string>> boost::bimaps::unordered_set_of<std::string>>
@ -147,8 +148,7 @@ Phenomenon GetPhenomenon(const std::string& code)
{ {
phenomenon = Phenomenon::Unknown; phenomenon = Phenomenon::Unknown;
BOOST_LOG_TRIVIAL(debug) logger_->debug("Unrecognized code: \"{}\"", code);
<< logPrefix_ << "Unrecognized code: \"" << code << "\"";
} }
return phenomenon; return phenomenon;

View file

@ -4,20 +4,21 @@
#endif #endif
#include <scwx/awips/pvtec.hpp> #include <scwx/awips/pvtec.hpp>
#include <scwx/util/logger.hpp>
#include <chrono> #include <chrono>
#include <boost/assign.hpp> #include <boost/assign.hpp>
#include <boost/bimap.hpp> #include <boost/bimap.hpp>
#include <boost/bimap/unordered_set_of.hpp> #include <boost/bimap/unordered_set_of.hpp>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace awips namespace awips
{ {
static const std::string logPrefix_ = "[scwx::awips::pvtec] "; static const std::string logPrefix_ = "scwx::awips::pvtec";
static const auto logger_ = util::Logger::Create(logPrefix_);
typedef boost::bimap<boost::bimaps::unordered_set_of<PVtec::ProductType>, typedef boost::bimap<boost::bimaps::unordered_set_of<PVtec::ProductType>,
boost::bimaps::unordered_set_of<std::string>> boost::bimaps::unordered_set_of<std::string>>
@ -171,9 +172,9 @@ bool PVtec::Parse(const std::string& s)
} }
catch (const std::exception& ex) catch (const std::exception& ex)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Error parsing event tracking number: \"{}\" ({})",
<< logPrefix_ << "Error parsing event tracking number: \"" eventNumberString,
<< eventNumberString << "\" (" << ex.what() << ")"; ex.what());
p->eventTrackingNumber_ = -1; p->eventTrackingNumber_ = -1;
} }
@ -214,8 +215,7 @@ bool PVtec::Parse(const std::string& s)
} }
else else
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid P-VTEC: \"{}\"", s);
<< logPrefix_ << "Invalid P-VTEC: \"" << s << "\"";
} }
p->valid_ = dataValid; p->valid_ = dataValid;
@ -235,8 +235,7 @@ PVtec::ProductType PVtec::GetProductType(const std::string& code)
{ {
productType = ProductType::Unknown; productType = ProductType::Unknown;
BOOST_LOG_TRIVIAL(debug) logger_->debug("Unrecognized product code: \"{}\"", code);
<< logPrefix_ << "Unrecognized product code: \"" << code << "\"";
} }
return productType; return productType;
@ -259,8 +258,7 @@ PVtec::Action PVtec::GetAction(const std::string& code)
{ {
action = Action::Unknown; action = Action::Unknown;
BOOST_LOG_TRIVIAL(debug) logger_->debug("Unrecognized action code: \"{}\"", code);
<< logPrefix_ << "Unrecognized action code: \"" << code << "\"";
} }
return action; return action;

View file

@ -1,16 +1,17 @@
#include <scwx/awips/significance.hpp> #include <scwx/awips/significance.hpp>
#include <scwx/util/logger.hpp>
#include <boost/assign.hpp> #include <boost/assign.hpp>
#include <boost/bimap.hpp> #include <boost/bimap.hpp>
#include <boost/bimap/unordered_set_of.hpp> #include <boost/bimap/unordered_set_of.hpp>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace awips namespace awips
{ {
static const std::string logPrefix_ = "[scwx::awips::significance] "; static const std::string logPrefix_ = "scwx::awips::significance";
static const auto logger_ = util::Logger::Create(logPrefix_);
typedef boost::bimap<boost::bimaps::unordered_set_of<Significance>, typedef boost::bimap<boost::bimaps::unordered_set_of<Significance>,
boost::bimaps::unordered_set_of<std::string>> boost::bimaps::unordered_set_of<std::string>>
@ -49,8 +50,7 @@ Significance GetSignificance(const std::string& code)
{ {
significance = Significance::Unknown; significance = Significance::Unknown;
BOOST_LOG_TRIVIAL(debug) logger_->debug("Unrecognized code: \"{}\"", code);
<< logPrefix_ << "Unrecognized code: \"" << code << "\"";
} }
return significance; return significance;

View file

@ -1,15 +1,15 @@
#include <scwx/awips/text_product_file.hpp> #include <scwx/awips/text_product_file.hpp>
#include <scwx/util/logger.hpp>
#include <fstream> #include <fstream>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace awips namespace awips
{ {
static const std::string logPrefix_ = "[scwx::awips::text_product_file] "; static const std::string logPrefix_ = "scwx::awips::text_product_file";
static const auto logger_ = util::Logger::Create(logPrefix_);
class TextProductFileImpl class TextProductFileImpl
{ {
@ -41,14 +41,13 @@ std::shared_ptr<TextProductMessage> TextProductFile::message(size_t i) const
bool TextProductFile::LoadFile(const std::string& filename) bool TextProductFile::LoadFile(const std::string& filename)
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "LoadFile(" << filename << ")"; logger_->debug("LoadFile: {}", filename);
bool fileValid = true; bool fileValid = true;
std::ifstream f(filename, std::ios_base::in | std::ios_base::binary); std::ifstream f(filename, std::ios_base::in | std::ios_base::binary);
if (!f.good()) if (!f.good())
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Could not open file for reading: {}", filename);
<< logPrefix_ << "Could not open file for reading: " << filename;
fileValid = false; fileValid = false;
} }
@ -62,7 +61,7 @@ bool TextProductFile::LoadFile(const std::string& filename)
bool TextProductFile::LoadData(std::istream& is) bool TextProductFile::LoadData(std::istream& is)
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Loading Data"; logger_->debug("Loading Data");
while (!is.eof()) while (!is.eof())
{ {

View file

@ -9,14 +9,12 @@
#include <regex> #include <regex>
#include <string> #include <string>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace awips namespace awips
{ {
static const std::string logPrefix_ = "[scwx::awips::text_product_message] "; static const std::string logPrefix_ = "scwx::awips::text_product_message";
// Issuance date/time takes one of the following forms: // Issuance date/time takes one of the following forms:
// * <hhmm>_xM_<tz>_day_mon_<dd>_year // * <hhmm>_xM_<tz>_day_mon_<dd>_year

View file

@ -1,12 +1,11 @@
#include <scwx/awips/wmo_header.hpp> #include <scwx/awips/wmo_header.hpp>
#include <scwx/util/logger.hpp>
#include <scwx/util/streams.hpp> #include <scwx/util/streams.hpp>
#include <istream> #include <istream>
#include <sstream> #include <sstream>
#include <string> #include <string>
#include <boost/log/trivial.hpp>
#ifdef WIN32 #ifdef WIN32
# include <WinSock2.h> # include <WinSock2.h>
#else #else
@ -18,7 +17,8 @@ namespace scwx
namespace awips namespace awips
{ {
static const std::string logPrefix_ = "[scwx::awips::wmo_header] "; static const std::string logPrefix_ = "scwx::awips::wmo_header";
static const auto logger_ = util::Logger::Create(logPrefix_);
class WmoHeaderImpl class WmoHeaderImpl
{ {
@ -139,7 +139,7 @@ bool WmoHeader::Parse(std::istream& is)
if (is.eof()) if (is.eof())
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Reached end of file"; logger_->debug("Reached end of file");
headerValid = false; headerValid = false;
} }
else else
@ -176,29 +176,28 @@ bool WmoHeader::Parse(std::istream& is)
if (wmoTokenList.size() < 3 || wmoTokenList.size() > 4) if (wmoTokenList.size() < 3 || wmoTokenList.size() > 4)
{ {
BOOST_LOG_TRIVIAL(debug) logger_->debug("Invalid number of WMO tokens");
<< logPrefix_ << "Invalid number of WMO tokens";
headerValid = false; headerValid = false;
} }
else if (wmoTokenList[0].size() != 6) else if (wmoTokenList[0].size() != 6)
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "WMO identifier malformed"; logger_->debug("WMO identifier malformed");
headerValid = false; headerValid = false;
} }
else if (wmoTokenList[1].size() != 4) else if (wmoTokenList[1].size() != 4)
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "ICAO malformed"; logger_->debug("ICAO malformed");
headerValid = false; headerValid = false;
} }
else if (wmoTokenList[2].size() != 6) else if (wmoTokenList[2].size() != 6)
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Date/time malformed"; logger_->debug("Date/time malformed");
headerValid = false; headerValid = false;
} }
else if (wmoTokenList.size() == 4 && wmoTokenList[3].size() != 3) else if (wmoTokenList.size() == 4 && wmoTokenList[3].size() != 3)
{ {
// BBB indicator is optional // BBB indicator is optional
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "BBB indicator malformed"; logger_->debug("BBB indicator malformed");
headerValid = false; headerValid = false;
} }
else else
@ -227,8 +226,7 @@ bool WmoHeader::Parse(std::istream& is)
{ {
if (awipsLine.size() != 6) if (awipsLine.size() != 6)
{ {
BOOST_LOG_TRIVIAL(debug) logger_->debug("AWIPS Identifier Line bad size");
<< logPrefix_ << "AWIPS Identifier Line bad size";
headerValid = false; headerValid = false;
} }
else else

View file

@ -1,4 +1,5 @@
#include <scwx/common/color_table.hpp> #include <scwx/common/color_table.hpp>
#include <scwx/util/logger.hpp>
#include <scwx/util/streams.hpp> #include <scwx/util/streams.hpp>
#include <cmath> #include <cmath>
@ -9,7 +10,6 @@
#include <sstream> #include <sstream>
#include <boost/gil.hpp> #include <boost/gil.hpp>
#include <boost/log/trivial.hpp>
#include <hsluv.h> #include <hsluv.h>
@ -18,7 +18,8 @@ namespace scwx
namespace common namespace common
{ {
static const std::string logPrefix_ {"[scwx::common::color_table] "}; static const std::string logPrefix_ {"scwx::common::color_table"};
static const auto logger_ = util::Logger::Create(logPrefix_);
enum class ColorMode enum class ColorMode
{ {
@ -135,8 +136,7 @@ bool ColorTable::IsValid() const
std::shared_ptr<ColorTable> ColorTable::Load(const std::string& filename) std::shared_ptr<ColorTable> ColorTable::Load(const std::string& filename)
{ {
BOOST_LOG_TRIVIAL(debug) logger_->debug("Loading color table: {}", filename);
<< logPrefix_ << "Loading color table: " << filename;
std::shared_ptr<ColorTable> p = std::make_shared<ColorTable>(); std::shared_ptr<ColorTable> p = std::make_shared<ColorTable>();
@ -167,8 +167,7 @@ std::shared_ptr<ColorTable> ColorTable::Load(const std::string& filename)
} }
catch (const std::exception&) catch (const std::exception&)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Could not parse line: {}", line);
<< logPrefix_ << "Could not parse line: " << line;
} }
} }
} }

View file

@ -0,0 +1,37 @@
#include <scwx/util/logger.hpp>
#include <mutex>
#include <spdlog/spdlog.h>
#include <spdlog/sinks/stdout_color_sinks.h>
namespace scwx
{
namespace util
{
namespace Logger
{
void Initialize()
{
spdlog::set_pattern("[%Y-%m-%d %T.%e] [%t] [%^%l%$] [%n] %v");
}
std::shared_ptr<spdlog::logger> Create(const std::string& name)
{
// Create a shared sink
static auto sink = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();
// Create the logger
std::shared_ptr<spdlog::logger> logger =
std::make_shared<spdlog::logger>(name, sink);
// Register the logger, so it can be retrieved later using spdlog::get()
spdlog::register_logger(logger);
return logger;
}
} // namespace Logger
} // namespace util
} // namespace scwx

View file

@ -1,6 +1,7 @@
#include <scwx/wsr88d/ar2v_file.hpp> #include <scwx/wsr88d/ar2v_file.hpp>
#include <scwx/wsr88d/rda/level2_message_factory.hpp> #include <scwx/wsr88d/rda/level2_message_factory.hpp>
#include <scwx/wsr88d/rda/types.hpp> #include <scwx/wsr88d/rda/types.hpp>
#include <scwx/util/logger.hpp>
#include <scwx/util/rangebuf.hpp> #include <scwx/util/rangebuf.hpp>
#include <scwx/util/time.hpp> #include <scwx/util/time.hpp>
@ -10,14 +11,14 @@
#include <boost/iostreams/copy.hpp> #include <boost/iostreams/copy.hpp>
#include <boost/iostreams/filtering_streambuf.hpp> #include <boost/iostreams/filtering_streambuf.hpp>
#include <boost/iostreams/filter/bzip2.hpp> #include <boost/iostreams/filter/bzip2.hpp>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
{ {
static const std::string logPrefix_ = "[scwx::wsr88d::ar2v_file] "; static const std::string logPrefix_ = "scwx::wsr88d::ar2v_file";
static const auto logger_ = util::Logger::Create(logPrefix_);
class Ar2vFileImpl class Ar2vFileImpl
{ {
@ -115,8 +116,7 @@ Ar2vFile::GetElevationScan(rda::DataBlockType dataBlockType,
float elevation, float elevation,
std::chrono::system_clock::time_point time) const std::chrono::system_clock::time_point time) const
{ {
BOOST_LOG_TRIVIAL(debug) logger_->debug("GetElevationScan: {} degrees", elevation);
<< logPrefix_ << "GetElevationScan: " << elevation << " degrees";
constexpr float scaleFactor = 8.0f / 0.043945f; constexpr float scaleFactor = 8.0f / 0.043945f;
@ -170,14 +170,13 @@ Ar2vFile::GetElevationScan(rda::DataBlockType dataBlockType,
bool Ar2vFile::LoadFile(const std::string& filename) bool Ar2vFile::LoadFile(const std::string& filename)
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "LoadFile(" << filename << ")"; logger_->debug("LoadFile: {}", filename);
bool fileValid = true; bool fileValid = true;
std::ifstream f(filename, std::ios_base::in | std::ios_base::binary); std::ifstream f(filename, std::ios_base::in | std::ios_base::binary);
if (!f.good()) if (!f.good())
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Could not open file for reading: {}", filename);
<< logPrefix_ << "Could not open file for reading: " << filename;
fileValid = false; fileValid = false;
} }
@ -191,7 +190,7 @@ bool Ar2vFile::LoadFile(const std::string& filename)
bool Ar2vFile::LoadData(std::istream& is) bool Ar2vFile::LoadData(std::istream& is)
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Loading Data"; logger_->debug("Loading Data");
bool dataValid = true; bool dataValid = true;
@ -211,21 +210,17 @@ bool Ar2vFile::LoadData(std::istream& is)
if (is.eof()) if (is.eof())
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Could not read Volume Header Record");
<< logPrefix_ << "Could not read Volume Header Record\n";
dataValid = false; dataValid = false;
} }
if (dataValid) if (dataValid)
{ {
BOOST_LOG_TRIVIAL(debug) logger_->debug("Filename: {}", p->tapeFilename_);
<< logPrefix_ << "Filename: " << p->tapeFilename_; logger_->debug("Extension: {}", p->extensionNumber_);
BOOST_LOG_TRIVIAL(debug) logger_->debug("Date: {}", p->julianDate_);
<< logPrefix_ << "Extension: " << p->extensionNumber_; logger_->debug("Time: {}", p->milliseconds_);
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Date: " << p->julianDate_; logger_->debug("ICAO: {}", p->icao_);
BOOST_LOG_TRIVIAL(debug)
<< logPrefix_ << "Time: " << p->milliseconds_;
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "ICAO: " << p->icao_;
size_t decompressedRecords = p->DecompressLDMRecords(is); size_t decompressedRecords = p->DecompressLDMRecords(is);
if (decompressedRecords == 0) if (decompressedRecords == 0)
@ -245,7 +240,7 @@ bool Ar2vFile::LoadData(std::istream& is)
size_t Ar2vFileImpl::DecompressLDMRecords(std::istream& is) size_t Ar2vFileImpl::DecompressLDMRecords(std::istream& is)
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Decompressing LDM Records"; logger_->debug("Decompressing LDM Records");
size_t numRecords = 0; size_t numRecords = 0;
@ -260,8 +255,7 @@ size_t Ar2vFileImpl::DecompressLDMRecords(std::istream& is)
controlWord = ntohl(controlWord); controlWord = ntohl(controlWord);
recordSize = std::abs(controlWord); recordSize = std::abs(controlWord);
BOOST_LOG_TRIVIAL(trace) logger_->trace("LDM Record Found: Size = {} bytes", recordSize);
<< logPrefix_ << "LDM Record Found: Size = " << recordSize << " bytes";
if (recordSize == 0) if (recordSize == 0)
{ {
@ -278,17 +272,14 @@ size_t Ar2vFileImpl::DecompressLDMRecords(std::istream& is)
{ {
std::stringstream ss; std::stringstream ss;
std::streamsize bytesCopied = boost::iostreams::copy(in, ss); std::streamsize bytesCopied = boost::iostreams::copy(in, ss);
BOOST_LOG_TRIVIAL(trace) logger_->trace("Decompressed record size = {} bytes", bytesCopied);
<< logPrefix_ << "Decompressed record size = " << bytesCopied
<< " bytes";
rawRecords_.push_back(std::move(ss)); rawRecords_.push_back(std::move(ss));
} }
catch (const boost::iostreams::bzip2_error& ex) catch (const boost::iostreams::bzip2_error& ex)
{ {
int error = ex.error(); int error = ex.error();
BOOST_LOG_TRIVIAL(warning) logger_->warn("Error decompressing record {}", numRecords);
<< logPrefix_ << "Error decompressing record " << numRecords;
is.seekg(startPosition + std::streampos(recordSize), is.seekg(startPosition + std::streampos(recordSize),
std::ios_base::beg); std::ios_base::beg);
@ -297,15 +288,14 @@ size_t Ar2vFileImpl::DecompressLDMRecords(std::istream& is)
++numRecords; ++numRecords;
} }
BOOST_LOG_TRIVIAL(debug) logger_->debug("Decompressed {} LDM Records", numRecords);
<< logPrefix_ << "Decompressed " << numRecords << " LDM Records";
return numRecords; return numRecords;
} }
void Ar2vFileImpl::ParseLDMRecords() void Ar2vFileImpl::ParseLDMRecords()
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Parsing LDM Records"; logger_->debug("Parsing LDM Records");
size_t count = 0; size_t count = 0;
@ -313,7 +303,7 @@ void Ar2vFileImpl::ParseLDMRecords()
{ {
std::stringstream& ss = *it; std::stringstream& ss = *it;
BOOST_LOG_TRIVIAL(trace) << logPrefix_ << "Record " << count++; logger_->trace("Record {}", count++);
ParseLDMRecord(ss); ParseLDMRecord(ss);
} }
@ -346,8 +336,7 @@ void Ar2vFileImpl::ParseLDMRecord(std::istream& is)
if (!is.eof() && offset != 0) if (!is.eof() && offset != 0)
{ {
BOOST_LOG_TRIVIAL(trace) logger_->trace("Next record offset by {} bytes", offset);
<< logPrefix_ << "Next record offset by " << offset << " bytes";
} }
else if (is.eof()) else if (is.eof())
{ {
@ -382,7 +371,8 @@ void Ar2vFileImpl::HandleMessage(std::shared_ptr<rda::Level2Message>& message)
std::static_pointer_cast<rda::DigitalRadarData>(message)); std::static_pointer_cast<rda::DigitalRadarData>(message));
break; break;
default: break; default:
break;
} }
} }
@ -402,12 +392,11 @@ void Ar2vFileImpl::ProcessRadarData(
void Ar2vFileImpl::IndexFile() void Ar2vFileImpl::IndexFile()
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Indexing file"; logger_->debug("Indexing file");
if (vcpData_ == nullptr) if (vcpData_ == nullptr)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Cannot index file without VCP data");
<< logPrefix_ << "Cannot index file without VCP data";
return; return;
} }

View file

@ -1,20 +1,21 @@
#include <scwx/wsr88d/level3_file.hpp> #include <scwx/wsr88d/level3_file.hpp>
#include <scwx/wsr88d/rpg/ccb_header.hpp> #include <scwx/wsr88d/rpg/ccb_header.hpp>
#include <scwx/wsr88d/rpg/level3_message_factory.hpp> #include <scwx/wsr88d/rpg/level3_message_factory.hpp>
#include <scwx/util/logger.hpp>
#include <fstream> #include <fstream>
#include <boost/iostreams/copy.hpp> #include <boost/iostreams/copy.hpp>
#include <boost/iostreams/filtering_streambuf.hpp> #include <boost/iostreams/filtering_streambuf.hpp>
#include <boost/iostreams/filter/zlib.hpp> #include <boost/iostreams/filter/zlib.hpp>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
{ {
static const std::string logPrefix_ = "[scwx::wsr88d::level3_file] "; static const std::string logPrefix_ = "scwx::wsr88d::level3_file";
static const auto logger_ = util::Logger::Create(logPrefix_);
class Level3FileImpl class Level3FileImpl
{ {
@ -50,14 +51,13 @@ std::shared_ptr<rpg::Level3Message> Level3File::message() const
bool Level3File::LoadFile(const std::string& filename) bool Level3File::LoadFile(const std::string& filename)
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "LoadFile(" << filename << ")"; logger_->debug("LoadFile: {}", filename);
bool fileValid = true; bool fileValid = true;
std::ifstream f(filename, std::ios_base::in | std::ios_base::binary); std::ifstream f(filename, std::ios_base::in | std::ios_base::binary);
if (!f.good()) if (!f.good())
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Could not open file for reading: {}", filename);
<< logPrefix_ << "Could not open file for reading: " << filename;
fileValid = false; fileValid = false;
} }
@ -71,7 +71,7 @@ bool Level3File::LoadFile(const std::string& filename)
bool Level3File::LoadData(std::istream& is) bool Level3File::LoadData(std::istream& is)
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Loading Data"; logger_->debug("Loading Data");
p->wmoHeader_ = std::make_shared<awips::WmoHeader>(); p->wmoHeader_ = std::make_shared<awips::WmoHeader>();
@ -79,16 +79,11 @@ bool Level3File::LoadData(std::istream& is)
if (dataValid) if (dataValid)
{ {
BOOST_LOG_TRIVIAL(debug) logger_->debug("Data Type: {}", p->wmoHeader_->data_type());
<< logPrefix_ << "Data Type: " << p->wmoHeader_->data_type(); logger_->debug("ICAO: {}", p->wmoHeader_->icao());
BOOST_LOG_TRIVIAL(debug) logger_->debug("Date/Time: {}", p->wmoHeader_->date_time());
<< logPrefix_ << "ICAO: " << p->wmoHeader_->icao(); logger_->debug("Category: {}", p->wmoHeader_->product_category());
BOOST_LOG_TRIVIAL(debug) logger_->debug("Site ID: {}", p->wmoHeader_->product_designator());
<< logPrefix_ << "Date/Time: " << p->wmoHeader_->date_time();
BOOST_LOG_TRIVIAL(debug)
<< logPrefix_ << "Category: " << p->wmoHeader_->product_category();
BOOST_LOG_TRIVIAL(debug)
<< logPrefix_ << "Site ID: " << p->wmoHeader_->product_designator();
// If the header is compressed // If the header is compressed
if (is.peek() == 0x78) if (is.peek() == 0x78)
@ -146,20 +141,15 @@ bool Level3FileImpl::DecompressFile(std::istream& is, std::stringstream& ss)
{ {
int error = ex.error(); int error = ex.error();
BOOST_LOG_TRIVIAL(warning) logger_->warn("Error decompressing data: {}", ex.what());
<< logPrefix_ << "Error decompressing data: " << ex.what();
dataValid = false; dataValid = false;
} }
if (dataValid) if (dataValid)
{ {
BOOST_LOG_TRIVIAL(trace) logger_->trace("Input data consumed = {} bytes", totalBytesCopied);
<< logPrefix_ << "Input data consumed = " << totalBytesCopied logger_->trace("Decompressed data size = {} bytes", totalBytesConsumed);
<< " bytes";
BOOST_LOG_TRIVIAL(trace)
<< logPrefix_ << "Decompressed data size = " << totalBytesConsumed
<< " bytes";
ccbHeader_ = std::make_shared<rpg::CcbHeader>(); ccbHeader_ = std::make_shared<rpg::CcbHeader>();
dataValid = ccbHeader_->Parse(ss); dataValid = ccbHeader_->Parse(ss);

View file

@ -1,6 +1,7 @@
#include <scwx/wsr88d/nexrad_file_factory.hpp> #include <scwx/wsr88d/nexrad_file_factory.hpp>
#include <scwx/wsr88d/ar2v_file.hpp> #include <scwx/wsr88d/ar2v_file.hpp>
#include <scwx/wsr88d/level3_file.hpp> #include <scwx/wsr88d/level3_file.hpp>
#include <scwx/util/logger.hpp>
#include <fstream> #include <fstream>
#include <sstream> #include <sstream>
@ -8,19 +9,19 @@
#include <boost/iostreams/copy.hpp> #include <boost/iostreams/copy.hpp>
#include <boost/iostreams/filtering_streambuf.hpp> #include <boost/iostreams/filtering_streambuf.hpp>
#include <boost/iostreams/filter/gzip.hpp> #include <boost/iostreams/filter/gzip.hpp>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
{ {
static const std::string logPrefix_ = "[scwx::wsr88d::nexrad_file_factory] "; static const std::string logPrefix_ = "scwx::wsr88d::nexrad_file_factory";
static const auto logger_ = util::Logger::Create(logPrefix_);
std::shared_ptr<NexradFile> std::shared_ptr<NexradFile>
NexradFileFactory::Create(const std::string& filename) NexradFileFactory::Create(const std::string& filename)
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Create(" << filename << ")"; logger_->debug("Create: {}", filename);
std::shared_ptr<NexradFile> nexradFile = nullptr; std::shared_ptr<NexradFile> nexradFile = nullptr;
bool fileValid = true; bool fileValid = true;
@ -28,8 +29,7 @@ NexradFileFactory::Create(const std::string& filename)
std::ifstream f(filename, std::ios_base::in | std::ios_base::binary); std::ifstream f(filename, std::ios_base::in | std::ios_base::binary);
if (!f.good()) if (!f.good())
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Could not open file for reading: {}", filename);
<< logPrefix_ << "Could not open file for reading: " << filename;
fileValid = false; fileValid = false;
} }
@ -74,26 +74,23 @@ std::shared_ptr<NexradFile> NexradFileFactory::Create(std::istream& is)
dataValid = ss.good(); dataValid = ss.good();
ss.seekg(pisBegin, std::ios_base::beg); ss.seekg(pisBegin, std::ios_base::beg);
BOOST_LOG_TRIVIAL(trace) logger_->trace("Decompressed file = {} bytes", bytesCopied);
<< logPrefix_ << "Decompressed file = " << bytesCopied << " bytes";
if (!dataValid) if (!dataValid)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Error reading decompressed stream");
<< logPrefix_ << "Error reading decompressed stream";
} }
} }
catch (const boost::iostreams::gzip_error& ex) catch (const boost::iostreams::gzip_error& ex)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Error decompressing file: {}", ex.what());
<< logPrefix_ << "Error decompressing file: " << ex.what();
dataValid = false; dataValid = false;
} }
} }
else if (!dataValid) else if (!dataValid)
{ {
BOOST_LOG_TRIVIAL(warning) << logPrefix_ << "Error reading file"; logger_->warn("Error reading file");
} }
if (dataValid) if (dataValid)

View file

@ -1,9 +1,8 @@
#include <scwx/wsr88d/rda/clutter_filter_bypass_map.hpp> #include <scwx/wsr88d/rda/clutter_filter_bypass_map.hpp>
#include <scwx/util/logger.hpp>
#include <vector> #include <vector>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -12,7 +11,8 @@ namespace rda
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ =
"[scwx::wsr88d::rda::clutter_filter_bypass_map] "; "scwx::wsr88d::rda::clutter_filter_bypass_map";
static const auto logger_ = util::Logger::Create(logPrefix_);
class ClutterFilterBypassMapImpl class ClutterFilterBypassMapImpl
{ {
@ -61,8 +61,7 @@ ClutterFilterBypassMap::range_bin(uint16_t e, uint16_t r, uint16_t b) const
bool ClutterFilterBypassMap::Parse(std::istream& is) bool ClutterFilterBypassMap::Parse(std::istream& is)
{ {
BOOST_LOG_TRIVIAL(trace) logger_->trace("Parsing Clutter Filter Bypass Map (Message Type 13)");
<< logPrefix_ << "Parsing Clutter Filter Bypass Map (Message Type 13)";
bool messageValid = true; bool messageValid = true;
size_t bytesRead = 0; size_t bytesRead = 0;
@ -79,21 +78,18 @@ bool ClutterFilterBypassMap::Parse(std::istream& is)
if (p->mapGenerationDate_ < 1) if (p->mapGenerationDate_ < 1)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid date: {}", p->mapGenerationDate_);
<< logPrefix_ << "Invalid date: " << p->mapGenerationDate_;
messageValid = false; messageValid = false;
} }
if (p->mapGenerationTime_ > 1440) if (p->mapGenerationTime_ > 1440)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid time: {}", p->mapGenerationTime_);
<< logPrefix_ << "Invalid time: " << p->mapGenerationTime_;
messageValid = false; messageValid = false;
} }
if (numElevationSegments < 1 || numElevationSegments > 5) if (numElevationSegments < 1 || numElevationSegments > 5)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid number of elevation segments: {}",
<< logPrefix_ numElevationSegments);
<< "Invalid number of elevation segments: " << numElevationSegments;
messageValid = false; messageValid = false;
} }

View file

@ -1,9 +1,8 @@
#include <scwx/wsr88d/rda/clutter_filter_map.hpp> #include <scwx/wsr88d/rda/clutter_filter_map.hpp>
#include <scwx/util/logger.hpp>
#include <vector> #include <vector>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -11,8 +10,8 @@ namespace wsr88d
namespace rda namespace rda
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ = "scwx::wsr88d::rda::clutter_filter_map";
"[scwx::wsr88d::rda::clutter_filter_map] "; static const auto logger_ = util::Logger::Create(logPrefix_);
struct RangeZone struct RangeZone
{ {
@ -75,8 +74,7 @@ uint16_t ClutterFilterMap::end_range(uint16_t e, uint16_t a, uint16_t z) const
bool ClutterFilterMap::Parse(std::istream& is) bool ClutterFilterMap::Parse(std::istream& is)
{ {
BOOST_LOG_TRIVIAL(trace) logger_->trace("Parsing Clutter Filter Map (Message Type 15)");
<< logPrefix_ << "Parsing Clutter Filter Map (Message Type 15)";
bool messageValid = true; bool messageValid = true;
size_t bytesRead = 0; size_t bytesRead = 0;
@ -93,21 +91,18 @@ bool ClutterFilterMap::Parse(std::istream& is)
if (p->mapGenerationDate_ < 1) if (p->mapGenerationDate_ < 1)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid date: {}", p->mapGenerationDate_);
<< logPrefix_ << "Invalid date: " << p->mapGenerationDate_;
messageValid = false; messageValid = false;
} }
if (p->mapGenerationTime_ > 1440) if (p->mapGenerationTime_ > 1440)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid time: {}", p->mapGenerationTime_);
<< logPrefix_ << "Invalid time: " << p->mapGenerationTime_;
messageValid = false; messageValid = false;
} }
if (numElevationSegments < 1 || numElevationSegments > 5) if (numElevationSegments < 1 || numElevationSegments > 5)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid number of elevation segments: {}",
<< logPrefix_ numElevationSegments);
<< "Invalid number of elevation segments: " << numElevationSegments;
messageValid = false; messageValid = false;
} }
@ -132,9 +127,7 @@ bool ClutterFilterMap::Parse(std::istream& is)
if (numRangeZones < 1 || numRangeZones > 20) if (numRangeZones < 1 || numRangeZones > 20)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid number of range zones: {}", numRangeZones);
<< logPrefix_
<< "Invalid number of range zones: " << numRangeZones;
messageValid = false; messageValid = false;
} }
@ -158,14 +151,12 @@ bool ClutterFilterMap::Parse(std::istream& is)
if (zone.opCode > 2) if (zone.opCode > 2)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid op code: {}", zone.opCode);
<< logPrefix_ << "Invalid op code: " << zone.opCode;
messageValid = false; messageValid = false;
} }
if (zone.endRange > 511) if (zone.endRange > 511)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid end range: {}", zone.endRange);
<< logPrefix_ << "Invalid end range: " << zone.endRange;
messageValid = false; messageValid = false;
} }
} }

View file

@ -1,6 +1,5 @@
#include <scwx/wsr88d/rda/digital_radar_data.hpp> #include <scwx/wsr88d/rda/digital_radar_data.hpp>
#include <scwx/util/logger.hpp>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
@ -9,8 +8,8 @@ namespace wsr88d
namespace rda namespace rda
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ = "scwx::wsr88d::rda::digital_radar_data";
"[scwx::wsr88d::rda::digital_radar_data] "; static const auto logger_ = util::Logger::Create(logPrefix_);
static const std::unordered_map<std::string, DataBlockType> strToDataBlock_ { static const std::unordered_map<std::string, DataBlockType> strToDataBlock_ {
{"VOL", DataBlockType::Volume}, {"VOL", DataBlockType::Volume},
@ -145,9 +144,15 @@ const void* MomentDataBlock::data_moments() const
switch (p->dataWordSize_) switch (p->dataWordSize_)
{ {
case 8: dataMoments = p->momentGates8_.data(); break; case 8:
case 16: dataMoments = p->momentGates16_.data(); break; dataMoments = p->momentGates8_.data();
default: dataMoments = nullptr; break; break;
case 16:
dataMoments = p->momentGates16_.data();
break;
default:
dataMoments = nullptr;
break;
} }
return dataMoments; return dataMoments;
@ -210,16 +215,14 @@ bool MomentDataBlock::Parse(std::istream& is)
} }
else else
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid data word size: {}", p->dataWordSize_);
<< logPrefix_ << "Invalid data word size: " << p->dataWordSize_;
dataBlockValid = false; dataBlockValid = false;
} }
} }
else else
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid number of data moment gates: {}",
<< logPrefix_ << "Invalid number of data moment gates: " p->numberOfDataMomentGates_);
<< p->numberOfDataMomentGates_;
dataBlockValid = false; dataBlockValid = false;
} }
@ -657,8 +660,7 @@ DigitalRadarData::moment_data_block(DataBlockType type) const
bool DigitalRadarData::Parse(std::istream& is) bool DigitalRadarData::Parse(std::istream& is)
{ {
BOOST_LOG_TRIVIAL(trace) logger_->trace("Parsing Digital Radar Data (Message Type 31)");
<< logPrefix_ << "Parsing Digital Radar Data (Message Type 31)";
bool messageValid = true; bool messageValid = true;
size_t bytesRead = 0; size_t bytesRead = 0;
@ -694,26 +696,22 @@ bool DigitalRadarData::Parse(std::istream& is)
if (p->azimuthNumber_ < 1 || p->azimuthNumber_ > 720) if (p->azimuthNumber_ < 1 || p->azimuthNumber_ > 720)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid azimuth number: {}", p->azimuthNumber_);
<< logPrefix_ << "Invalid azimuth number: " << p->azimuthNumber_;
messageValid = false; messageValid = false;
} }
if (p->elevationNumber_ < 1 || p->elevationNumber_ > 32) if (p->elevationNumber_ < 1 || p->elevationNumber_ > 32)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid elevation number: ", p->elevationNumber_);
<< logPrefix_ << "Invalid elevation number: " << p->elevationNumber_;
messageValid = false; messageValid = false;
} }
if (p->dataBlockCount_ < 4 || p->dataBlockCount_ > 10) if (p->dataBlockCount_ < 4 || p->dataBlockCount_ > 10)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid number of data blocks: {}", p->dataBlockCount_);
<< logPrefix_
<< "Invalid number of data blocks: " << p->dataBlockCount_;
messageValid = false; messageValid = false;
} }
if (p->compressionIndicator_ != 0) if (p->compressionIndicator_ != 0)
{ {
BOOST_LOG_TRIVIAL(warning) << logPrefix_ << "Compression not supported"; logger_->warn("Compression not supported");
messageValid = false; messageValid = false;
} }
@ -772,8 +770,7 @@ bool DigitalRadarData::Parse(std::istream& is)
std::move(MomentDataBlock::Create(dataBlockType, dataName, is)); std::move(MomentDataBlock::Create(dataBlockType, dataName, is));
break; break;
default: default:
BOOST_LOG_TRIVIAL(warning) logger_->warn("Unknown data name: {}", dataName);
<< logPrefix_ << "Unknown data name: " << dataName;
break; break;
} }
} }

View file

@ -1,7 +1,5 @@
#include <scwx/wsr88d/rda/level2_message.hpp> #include <scwx/wsr88d/rda/level2_message.hpp>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -9,7 +7,7 @@ namespace wsr88d
namespace rda namespace rda
{ {
static const std::string logPrefix_ = "[scwx::wsr88d::rda::level2_message] "; static const std::string logPrefix_ = "scwx::wsr88d::rda::level2_message";
class Level2MessageImpl class Level2MessageImpl
{ {

View file

@ -1,5 +1,6 @@
#include <scwx/wsr88d/rda/level2_message_factory.hpp> #include <scwx/wsr88d/rda/level2_message_factory.hpp>
#include <scwx/util/logger.hpp>
#include <scwx/util/vectorbuf.hpp> #include <scwx/util/vectorbuf.hpp>
#include <scwx/wsr88d/rda/clutter_filter_bypass_map.hpp> #include <scwx/wsr88d/rda/clutter_filter_bypass_map.hpp>
#include <scwx/wsr88d/rda/clutter_filter_map.hpp> #include <scwx/wsr88d/rda/clutter_filter_map.hpp>
@ -12,8 +13,6 @@
#include <unordered_map> #include <unordered_map>
#include <vector> #include <vector>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -22,7 +21,8 @@ namespace rda
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ =
"[scwx::wsr88d::rda::level2_message_factory] "; "scwx::wsr88d::rda::level2_message_factory";
static const auto logger_ = util::Logger::Create(logPrefix_);
typedef std::function<std::shared_ptr<Level2Message>(Level2MessageHeader&&, typedef std::function<std::shared_ptr<Level2Message>(Level2MessageHeader&&,
std::istream&)> std::istream&)>
@ -51,9 +51,8 @@ Level2MessageInfo Level2MessageFactory::Create(std::istream& is)
if (info.headerValid && create_.find(header.message_type()) == create_.end()) if (info.headerValid && create_.find(header.message_type()) == create_.end())
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Unknown message type: {}",
<< logPrefix_ << "Unknown message type: " static_cast<unsigned>(header.message_type()));
<< static_cast<unsigned>(header.message_type());
info.messageValid = false; info.messageValid = false;
} }
@ -68,16 +67,15 @@ Level2MessageInfo Level2MessageFactory::Create(std::istream& is)
if (totalSegments == 1) if (totalSegments == 1)
{ {
BOOST_LOG_TRIVIAL(trace) << logPrefix_ << "Found Message " logger_->trace("Found Message {}", static_cast<unsigned>(messageType));
<< static_cast<unsigned>(messageType);
messageStream = &is; messageStream = &is;
} }
else else
{ {
BOOST_LOG_TRIVIAL(trace) logger_->trace("Found Message {} Segment {}/{}",
<< logPrefix_ << "Found Message " static_cast<unsigned>(messageType),
<< static_cast<unsigned>(messageType) << " Segment " << segment segment,
<< "/" << totalSegments; totalSegments);
if (segment == 1) if (segment == 1)
{ {
@ -89,8 +87,7 @@ Level2MessageInfo Level2MessageFactory::Create(std::istream& is)
if (messageData_.capacity() < bufferedSize_ + dataSize) if (messageData_.capacity() < bufferedSize_ + dataSize)
{ {
BOOST_LOG_TRIVIAL(debug) logger_->debug("Bad size estimate, increasing size");
<< logPrefix_ << "Bad size estimate, increasing size";
// Estimate remaining size // Estimate remaining size
uint16_t remainingSegments = uint16_t remainingSegments =
@ -105,8 +102,7 @@ Level2MessageInfo Level2MessageFactory::Create(std::istream& is)
if (is.eof()) if (is.eof())
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("End of file reached trying to buffer message");
<< logPrefix_ << "End of file reached trying to buffer message";
info.messageValid = false; info.messageValid = false;
messageData_.shrink_to_fit(); messageData_.shrink_to_fit();
bufferedSize_ = 0; bufferedSize_ = 0;

View file

@ -1,10 +1,9 @@
#include <scwx/wsr88d/rda/level2_message_header.hpp> #include <scwx/wsr88d/rda/level2_message_header.hpp>
#include <scwx/util/logger.hpp>
#include <istream> #include <istream>
#include <string> #include <string>
#include <boost/log/trivial.hpp>
#ifdef WIN32 #ifdef WIN32
# include <WinSock2.h> # include <WinSock2.h>
#else #else
@ -19,7 +18,8 @@ namespace rda
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ =
"[scwx::wsr88d::rda::level2_message_header] "; "scwx::wsr88d::rda::level2_message_header";
static const auto logger_ = util::Logger::Create(logPrefix_);
class Level2MessageHeaderImpl class Level2MessageHeaderImpl
{ {
@ -123,44 +123,40 @@ bool Level2MessageHeader::Parse(std::istream& is)
if (is.eof()) if (is.eof())
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Reached end of file"; logger_->debug("Reached end of file");
headerValid = false; headerValid = false;
} }
else else
{ {
if (p->messageSize_ < 9) if (p->messageSize_ < 9)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid message size: {}", p->messageSize_);
<< logPrefix_ << "Invalid message size: " << p->messageSize_;
headerValid = false; headerValid = false;
} }
if (p->julianDate_ < 1) if (p->julianDate_ < 1)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid date: {}", p->julianDate_);
<< logPrefix_ << "Invalid date: " << p->julianDate_;
headerValid = false; headerValid = false;
} }
if (p->millisecondsOfDay_ > 86'399'999u) if (p->millisecondsOfDay_ > 86'399'999u)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid milliseconds: {}", p->millisecondsOfDay_);
<< logPrefix_ << "Invalid milliseconds: " << p->millisecondsOfDay_;
headerValid = false; headerValid = false;
} }
if (p->messageSize_ < 65534 && if (p->messageSize_ < 65534 &&
p->messageSegmentNumber_ > p->numberOfMessageSegments_) p->messageSegmentNumber_ > p->numberOfMessageSegments_)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid segment = {}/{}",
<< logPrefix_ << "Invalid segment = " << p->messageSegmentNumber_ p->messageSegmentNumber_,
<< "/" << p->numberOfMessageSegments_; p->numberOfMessageSegments_);
headerValid = false; headerValid = false;
} }
} }
if (headerValid) if (headerValid)
{ {
BOOST_LOG_TRIVIAL(trace) logger_->trace("Message type: {}",
<< logPrefix_ static_cast<unsigned>(p->messageType_));
<< "Message type: " << static_cast<unsigned>(p->messageType_);
} }
return headerValid; return headerValid;

View file

@ -1,9 +1,8 @@
#include <scwx/wsr88d/rda/performance_maintenance_data.hpp> #include <scwx/wsr88d/rda/performance_maintenance_data.hpp>
#include <scwx/util/logger.hpp>
#include <array> #include <array>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -12,7 +11,8 @@ namespace rda
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ =
"[scwx::wsr88d::rda::performance_maintenance_data] "; "scwx::wsr88d::rda::performance_maintenance_data";
static const auto logger_ = util::Logger::Create(logPrefix_);
class PerformanceMaintenanceDataImpl class PerformanceMaintenanceDataImpl
{ {
@ -1823,8 +1823,7 @@ uint16_t PerformanceMaintenanceData::version() const
bool PerformanceMaintenanceData::Parse(std::istream& is) bool PerformanceMaintenanceData::Parse(std::istream& is)
{ {
BOOST_LOG_TRIVIAL(trace) logger_->trace("Parsing Performance/Maintenance Data (Message Type 3)");
<< logPrefix_ << "Parsing Performance/Maintenance Data (Message Type 3)";
bool messageValid = true; bool messageValid = true;
size_t bytesRead = 0; size_t bytesRead = 0;

View file

@ -1,6 +1,5 @@
#include <scwx/wsr88d/rda/rda_adaptation_data.hpp> #include <scwx/wsr88d/rda/rda_adaptation_data.hpp>
#include <scwx/util/logger.hpp>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
@ -9,8 +8,8 @@ namespace wsr88d
namespace rda namespace rda
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ = "scwx::wsr88d::rda::rda_adaptation_data";
"[scwx::wsr88d::rda::rda_adaptation_data] "; static const auto logger_ = util::Logger::Create(logPrefix_);
struct AntManualSetup struct AntManualSetup
{ {
@ -1267,8 +1266,7 @@ float RdaAdaptationData::txb_alarm_thresh() const
bool RdaAdaptationData::Parse(std::istream& is) bool RdaAdaptationData::Parse(std::istream& is)
{ {
BOOST_LOG_TRIVIAL(trace) logger_->trace("Parsing RDA Adaptation Data (Message Type 18)");
<< logPrefix_ << "Parsing RDA Adaptation Data (Message Type 18)";
bool messageValid = true; bool messageValid = true;
size_t bytesRead = 0; size_t bytesRead = 0;

View file

@ -1,6 +1,5 @@
#include <scwx/wsr88d/rda/rda_status_data.hpp> #include <scwx/wsr88d/rda/rda_status_data.hpp>
#include <scwx/util/logger.hpp>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
@ -9,7 +8,8 @@ namespace wsr88d
namespace rda namespace rda
{ {
static const std::string logPrefix_ = "[scwx::wsr88d::rda::rda_status_data] "; static const std::string logPrefix_ = "scwx::wsr88d::rda::rda_status_data";
static const auto logger_ = util::Logger::Create(logPrefix_);
class RdaStatusDataImpl class RdaStatusDataImpl
{ {
@ -233,8 +233,7 @@ uint16_t RdaStatusData::status_version() const
bool RdaStatusData::Parse(std::istream& is) bool RdaStatusData::Parse(std::istream& is)
{ {
BOOST_LOG_TRIVIAL(trace) logger_->trace("Parsing RDA Status Data (Message Type 2)");
<< logPrefix_ << "Parsing RDA Status Data (Message Type 2)";
bool messageValid = true; bool messageValid = true;
size_t bytesRead = 0; size_t bytesRead = 0;

View file

@ -1,6 +1,5 @@
#include <scwx/wsr88d/rda/volume_coverage_pattern_data.hpp> #include <scwx/wsr88d/rda/volume_coverage_pattern_data.hpp>
#include <scwx/util/logger.hpp>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
@ -10,7 +9,8 @@ namespace rda
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ =
"[scwx::wsr88d::rda::volume_coverage_pattern_data] "; "scwx::wsr88d::rda::volume_coverage_pattern_data";
static const auto logger_ = util::Logger::Create(logPrefix_);
struct Sector; struct Sector;
@ -137,8 +137,12 @@ float VolumeCoveragePatternData::doppler_velocity_resolution() const
switch (p->dopplerVelocityResolution_) switch (p->dopplerVelocityResolution_)
{ {
case 2: resolution = 0.5f; break; case 2:
case 4: resolution = 1.0f; break; resolution = 0.5f;
break;
case 4:
resolution = 1.0f;
break;
} }
return resolution; return resolution;
@ -233,12 +237,18 @@ WaveformType VolumeCoveragePatternData::waveform_type(uint16_t e) const
{ {
switch (p->elevationCuts_[e].waveformType_) switch (p->elevationCuts_[e].waveformType_)
{ {
case 1: return WaveformType::ContiguousSurveillance; case 1:
case 2: return WaveformType::ContiguousDopplerWithAmbiguityResolution; return WaveformType::ContiguousSurveillance;
case 3: return WaveformType::ContiguousDopplerWithoutAmbiguityResolution; case 2:
case 4: return WaveformType::Batch; return WaveformType::ContiguousDopplerWithAmbiguityResolution;
case 5: return WaveformType::StaggeredPulsePair; case 3:
default: return WaveformType::Unknown; return WaveformType::ContiguousDopplerWithoutAmbiguityResolution;
case 4:
return WaveformType::Batch;
case 5:
return WaveformType::StaggeredPulsePair;
default:
return WaveformType::Unknown;
} }
} }
@ -380,8 +390,7 @@ VolumeCoveragePatternData::doppler_prf_pulse_count_radial(uint16_t e,
bool VolumeCoveragePatternData::Parse(std::istream& is) bool VolumeCoveragePatternData::Parse(std::istream& is)
{ {
BOOST_LOG_TRIVIAL(trace) logger_->trace("Parsing Volume Coverage Pattern Data (Message Type 5)");
<< logPrefix_ << "Parsing Volume Coverage Pattern Data (Message Type 5)";
bool messageValid = true; bool messageValid = true;
size_t bytesRead = 0; size_t bytesRead = 0;
@ -412,15 +421,13 @@ bool VolumeCoveragePatternData::Parse(std::istream& is)
if (messageSize < 34 || messageSize > 747) if (messageSize < 34 || messageSize > 747)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid message size: {}", messageSize);
<< logPrefix_ << "Invalid message size: " << messageSize;
messageValid = false; messageValid = false;
} }
if (numberOfElevationCuts < 1 || numberOfElevationCuts > 32) if (numberOfElevationCuts < 1 || numberOfElevationCuts > 32)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid number of elevation cuts: {}",
<< logPrefix_ numberOfElevationCuts);
<< "Invalid number of elevation cuts: " << numberOfElevationCuts;
messageValid = false; messageValid = false;
} }
@ -483,9 +490,9 @@ bool VolumeCoveragePatternData::Parse(std::istream& is)
if (messageValid && bytesRead != messageSize * 2) if (messageValid && bytesRead != messageSize * 2)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Bytes read ({}) not equal to message size ({})",
<< logPrefix_ << "Bytes read (" << bytesRead bytesRead,
<< ") not equal to message size (" << messageSize * 2 << ")"; messageSize * 2);
} }
if (!ValidateMessage(is, bytesRead)) if (!ValidateMessage(is, bytesRead))

View file

@ -1,12 +1,11 @@
#include <scwx/wsr88d/rpg/ccb_header.hpp> #include <scwx/wsr88d/rpg/ccb_header.hpp>
#include <scwx/util/logger.hpp>
#include <scwx/util/streams.hpp> #include <scwx/util/streams.hpp>
#include <istream> #include <istream>
#include <sstream> #include <sstream>
#include <string> #include <string>
#include <boost/log/trivial.hpp>
#ifdef WIN32 #ifdef WIN32
# include <WinSock2.h> # include <WinSock2.h>
#else #else
@ -20,7 +19,8 @@ namespace wsr88d
namespace rpg namespace rpg
{ {
static const std::string logPrefix_ = "[scwx::wsr88d::rpg::ccb_header] "; static const std::string logPrefix_ = "scwx::wsr88d::rpg::ccb_header";
static const auto logger_ = util::Logger::Create(logPrefix_);
class CcbHeaderImpl class CcbHeaderImpl
{ {
@ -197,7 +197,7 @@ bool CcbHeader::Parse(std::istream& is)
if (is.eof()) if (is.eof())
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Reached end of file"; logger_->debug("Reached end of file");
headerValid = false; headerValid = false;
} }

View file

@ -1,10 +1,9 @@
#include <scwx/wsr88d/rpg/cell_trend_data_packet.hpp> #include <scwx/wsr88d/rpg/cell_trend_data_packet.hpp>
#include <scwx/util/logger.hpp>
#include <istream> #include <istream>
#include <string> #include <string>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -13,7 +12,8 @@ namespace rpg
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ =
"[scwx::wsr88d::rpg::cell_trend_data_packet] "; "scwx::wsr88d::rpg::cell_trend_data_packet";
static const auto logger_ = util::Logger::Create(logPrefix_);
struct CellTrendData struct CellTrendData
{ {
@ -134,21 +134,19 @@ bool CellTrendDataPacket::Parse(std::istream& is)
if (is.eof()) if (is.eof())
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Reached end of file"; logger_->debug("Reached end of file");
blockValid = false; blockValid = false;
} }
else else
{ {
if (p->packetCode_ != 21) if (p->packetCode_ != 21)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid packet code: {}", p->packetCode_);
<< logPrefix_ << "Invalid packet code: " << p->packetCode_;
blockValid = false; blockValid = false;
} }
else if (p->lengthOfBlock_ < 12 || p->lengthOfBlock_ > 198) else if (p->lengthOfBlock_ < 12 || p->lengthOfBlock_ > 198)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid length of block: {}", p->packetCode_);
<< logPrefix_ << "Invalid length of block: " << p->packetCode_;
blockValid = false; blockValid = false;
} }
} }

View file

@ -1,10 +1,9 @@
#include <scwx/wsr88d/rpg/cell_trend_volume_scan_times.hpp> #include <scwx/wsr88d/rpg/cell_trend_volume_scan_times.hpp>
#include <scwx/util/logger.hpp>
#include <istream> #include <istream>
#include <string> #include <string>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -13,7 +12,8 @@ namespace rpg
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ =
"[scwx::wsr88d::rpg::cell_trend_volume_scan_times] "; "scwx::wsr88d::rpg::cell_trend_volume_scan_times";
static const auto logger_ = util::Logger::Create(logPrefix_);
class CellTrendVolumeScanTimesImpl class CellTrendVolumeScanTimesImpl
{ {
@ -93,21 +93,19 @@ bool CellTrendVolumeScanTimes::Parse(std::istream& is)
if (is.eof()) if (is.eof())
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Reached end of file"; logger_->debug("Reached end of file");
blockValid = false; blockValid = false;
} }
else else
{ {
if (p->packetCode_ != 22) if (p->packetCode_ != 22)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid packet code: {}", p->packetCode_);
<< logPrefix_ << "Invalid packet code: " << p->packetCode_;
blockValid = false; blockValid = false;
} }
else if (p->lengthOfBlock_ < 4 || p->lengthOfBlock_ > 22) else if (p->lengthOfBlock_ < 4 || p->lengthOfBlock_ > 22)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid length of block: {}", p->packetCode_);
<< logPrefix_ << "Invalid length of block: " << p->packetCode_;
blockValid = false; blockValid = false;
} }
} }

View file

@ -1,10 +1,9 @@
#include <scwx/wsr88d/rpg/digital_precipitation_data_array_packet.hpp> #include <scwx/wsr88d/rpg/digital_precipitation_data_array_packet.hpp>
#include <scwx/util/logger.hpp>
#include <istream> #include <istream>
#include <string> #include <string>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -13,7 +12,8 @@ namespace rpg
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ =
"[scwx::wsr88d::rpg::digital_precipitation_data_array_packet] "; "scwx::wsr88d::rpg::digital_precipitation_data_array_packet";
static const auto logger_ = util::Logger::Create(logPrefix_);
class DigitalPrecipitationDataArrayPacketImpl class DigitalPrecipitationDataArrayPacketImpl
{ {
@ -97,21 +97,19 @@ bool DigitalPrecipitationDataArrayPacket::Parse(std::istream& is)
if (is.eof()) if (is.eof())
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Reached end of file"; logger_->debug("Reached end of file");
blockValid = false; blockValid = false;
} }
else else
{ {
if (p->packetCode_ != 17) if (p->packetCode_ != 17)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid packet code: {}", p->packetCode_);
<< logPrefix_ << "Invalid packet code: " << p->packetCode_;
blockValid = false; blockValid = false;
} }
if (p->numberOfRows_ != 131) if (p->numberOfRows_ != 131)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid number of rows: {}", p->numberOfRows_);
<< logPrefix_ << "Invalid number of rows: " << p->numberOfRows_;
blockValid = false; blockValid = false;
} }
} }
@ -134,10 +132,9 @@ bool DigitalPrecipitationDataArrayPacket::Parse(std::istream& is)
if (row.numberOfBytes_ < 2 || row.numberOfBytes_ > 262 || if (row.numberOfBytes_ < 2 || row.numberOfBytes_ > 262 ||
row.numberOfBytes_ % 2 != 0) row.numberOfBytes_ % 2 != 0)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid number of bytes in row: {} (Row {})",
<< logPrefix_ row.numberOfBytes_,
<< "Invalid number of bytes in row: " << row.numberOfBytes_ r);
<< " (Row " << r << ")";
blockValid = false; blockValid = false;
break; break;
} }

View file

@ -1,10 +1,9 @@
#include <scwx/wsr88d/rpg/digital_radial_data_array_packet.hpp> #include <scwx/wsr88d/rpg/digital_radial_data_array_packet.hpp>
#include <scwx/util/logger.hpp>
#include <istream> #include <istream>
#include <string> #include <string>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -13,7 +12,8 @@ namespace rpg
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ =
"[scwx::wsr88d::rpg::digital_radial_data_array_packet] "; "scwx::wsr88d::rpg::digital_radial_data_array_packet";
static const auto logger_ = util::Logger::Create(logPrefix_);
class DigitalRadialDataArrayPacketImpl class DigitalRadialDataArrayPacketImpl
{ {
@ -148,36 +148,31 @@ bool DigitalRadialDataArrayPacket::Parse(std::istream& is)
if (is.eof()) if (is.eof())
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Reached end of file"; logger_->debug("Reached end of file");
blockValid = false; blockValid = false;
} }
else else
{ {
if (p->packetCode_ != 16) if (p->packetCode_ != 16)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid packet code: {}", p->packetCode_);
<< logPrefix_ << "Invalid packet code: " << p->packetCode_;
blockValid = false; blockValid = false;
} }
if (p->indexOfFirstRangeBin_ < 0 || p->indexOfFirstRangeBin_ > 230) if (p->indexOfFirstRangeBin_ < 0 || p->indexOfFirstRangeBin_ > 230)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid index of first range bin: {}",
<< logPrefix_ p->indexOfFirstRangeBin_);
<< "Invalid index of first range bin: " << p->indexOfFirstRangeBin_;
blockValid = false; blockValid = false;
} }
if (p->numberOfRangeBins_ < 0 || p->numberOfRangeBins_ > 1840) if (p->numberOfRangeBins_ < 0 || p->numberOfRangeBins_ > 1840)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid number of range bins: {}",
<< logPrefix_ p->numberOfRangeBins_);
<< "Invalid number of range bins: " << p->numberOfRangeBins_;
blockValid = false; blockValid = false;
} }
if (p->numberOfRadials_ < 1 || p->numberOfRadials_ > 720) if (p->numberOfRadials_ < 1 || p->numberOfRadials_ > 720)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid number of radials: {}", p->numberOfRadials_);
<< logPrefix_
<< "Invalid number of radials: " << p->numberOfRadials_;
blockValid = false; blockValid = false;
} }
} }
@ -201,19 +196,19 @@ bool DigitalRadialDataArrayPacket::Parse(std::istream& is)
if (radial.numberOfBytes_ < 1 || radial.numberOfBytes_ > 1840) if (radial.numberOfBytes_ < 1 || radial.numberOfBytes_ > 1840)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid number of bytes: {} (Radial {})",
<< logPrefix_ radial.numberOfBytes_,
<< "Invalid number of bytes: " << radial.numberOfBytes_ r);
<< " (Radial " << r << ")";
blockValid = false; blockValid = false;
break; break;
} }
else if (radial.numberOfBytes_ < p->numberOfRangeBins_) else if (radial.numberOfBytes_ < p->numberOfRangeBins_)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn(
<< logPrefix_ << "Number of bytes < number of range bins: " "Number of bytes < number of range bins: {} < {} (Radial {})",
<< radial.numberOfBytes_ << " < " << p->numberOfRangeBins_ radial.numberOfBytes_,
<< " (Radial " << r << ")"; p->numberOfRangeBins_,
r);
blockValid = false; blockValid = false;
break; break;
} }

View file

@ -4,8 +4,6 @@
#include <istream> #include <istream>
#include <string> #include <string>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -14,7 +12,7 @@ namespace rpg
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ =
"[scwx::wsr88d::rpg::general_status_message] "; "scwx::wsr88d::rpg::general_status_message";
class GeneralStatusMessageImpl class GeneralStatusMessageImpl
{ {

View file

@ -1,10 +1,9 @@
#include <scwx/wsr88d/rpg/generic_data_packet.hpp> #include <scwx/wsr88d/rpg/generic_data_packet.hpp>
#include <scwx/util/logger.hpp>
#include <istream> #include <istream>
#include <string> #include <string>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -12,8 +11,8 @@ namespace wsr88d
namespace rpg namespace rpg
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ = "scwx::wsr88d::rpg::generic_data_packet";
"[scwx::wsr88d::rpg::generic_data_packet] "; static const auto logger_ = util::Logger::Create(logPrefix_);
class GenericDataPacketImpl class GenericDataPacketImpl
{ {
@ -70,15 +69,14 @@ bool GenericDataPacket::Parse(std::istream& is)
if (is.eof()) if (is.eof())
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Reached end of file"; logger_->debug("Reached end of file");
blockValid = false; blockValid = false;
} }
else else
{ {
if (p->packetCode_ != 28 && p->packetCode_ != 29) if (p->packetCode_ != 28 && p->packetCode_ != 29)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid packet code: {}", p->packetCode_);
<< logPrefix_ << "Invalid packet code: " << p->packetCode_;
blockValid = false; blockValid = false;
} }
} }

View file

@ -2,8 +2,6 @@
#include <string> #include <string>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -12,7 +10,7 @@ namespace rpg
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ =
"[scwx::wsr88d::rpg::generic_radial_data_packet] "; "scwx::wsr88d::rpg::generic_radial_data_packet";
class GenericRadialDataPacketImpl class GenericRadialDataPacketImpl
{ {

View file

@ -1,11 +1,10 @@
#include <scwx/wsr88d/rpg/graphic_alphanumeric_block.hpp> #include <scwx/wsr88d/rpg/graphic_alphanumeric_block.hpp>
#include <scwx/wsr88d/rpg/packet_factory.hpp> #include <scwx/wsr88d/rpg/packet_factory.hpp>
#include <scwx/util/logger.hpp>
#include <istream> #include <istream>
#include <string> #include <string>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -14,7 +13,8 @@ namespace rpg
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ =
"[scwx::wsr88d::rpg::graphic_alphanumeric_block] "; "scwx::wsr88d::rpg::graphic_alphanumeric_block";
static const auto logger_ = util::Logger::Create(logPrefix_);
class GraphicAlphanumericBlockImpl class GraphicAlphanumericBlockImpl
{ {
@ -76,33 +76,29 @@ bool GraphicAlphanumericBlock::Parse(std::istream& is)
if (is.eof()) if (is.eof())
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Reached end of file"; logger_->debug("Reached end of file");
blockValid = false; blockValid = false;
} }
else else
{ {
if (p->blockDivider_ != -1) if (p->blockDivider_ != -1)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid block divider: {}", p->blockDivider_);
<< logPrefix_ << "Invalid block divider: " << p->blockDivider_;
blockValid = false; blockValid = false;
} }
if (p->blockId_ != 2) if (p->blockId_ != 2)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid block ID: {}", p->blockId_);
<< logPrefix_ << "Invalid block ID: " << p->blockId_;
blockValid = false; blockValid = false;
} }
if (p->lengthOfBlock_ < 10) if (p->lengthOfBlock_ < 10)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid block length: {}", p->lengthOfBlock_);
<< logPrefix_ << "Invalid block length: " << p->lengthOfBlock_;
blockValid = false; blockValid = false;
} }
if (p->numberOfPages_ < 1 || p->numberOfPages_ > 48) if (p->numberOfPages_ < 1 || p->numberOfPages_ > 48)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid number of pages: {}", p->numberOfPages_);
<< logPrefix_ << "Invalid number of pages: " << p->numberOfPages_;
blockValid = false; blockValid = false;
} }
} }
@ -114,7 +110,7 @@ bool GraphicAlphanumericBlock::Parse(std::istream& is)
for (uint16_t i = 0; i < p->numberOfPages_; i++) for (uint16_t i = 0; i < p->numberOfPages_; i++)
{ {
BOOST_LOG_TRIVIAL(trace) << logPrefix_ << "Page " << (i + 1); logger_->trace("Page {}", (i + 1));
std::vector<std::shared_ptr<Packet>> packetList; std::vector<std::shared_ptr<Packet>> packetList;
uint32_t bytesRead = 0; uint32_t bytesRead = 0;
@ -131,9 +127,8 @@ bool GraphicAlphanumericBlock::Parse(std::istream& is)
if (pageNumber != i + 1) if (pageNumber != i + 1)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn(
<< logPrefix_ << "Page out of order: Expected " << (i + 1) "Page out of order: Expected {}, found {}", (i + 1), pageNumber);
<< ", found " << pageNumber;
} }
while (bytesRead < lengthOfPage) while (bytesRead < lengthOfPage)
@ -152,19 +147,17 @@ bool GraphicAlphanumericBlock::Parse(std::istream& is)
if (bytesRead < lengthOfPage) if (bytesRead < lengthOfPage)
{ {
BOOST_LOG_TRIVIAL(trace) logger_->trace("Page bytes read smaller than size: {} < {} bytes",
<< logPrefix_ bytesRead,
<< "Page bytes read smaller than size: " << bytesRead << " < " lengthOfPage);
<< lengthOfPage << " bytes";
blockValid = false; blockValid = false;
is.seekg(pageEnd, std::ios_base::beg); is.seekg(pageEnd, std::ios_base::beg);
} }
if (bytesRead > lengthOfPage) if (bytesRead > lengthOfPage)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Page bytes read larger than size: {} > {} bytes",
<< logPrefix_ bytesRead,
<< "Page bytes read larger than size: " << bytesRead << " > " lengthOfPage);
<< lengthOfPage << " bytes";
blockValid = false; blockValid = false;
is.seekg(pageEnd, std::ios_base::beg); is.seekg(pageEnd, std::ios_base::beg);
} }

View file

@ -1,4 +1,5 @@
#include <scwx/wsr88d/rpg/graphic_product_message.hpp> #include <scwx/wsr88d/rpg/graphic_product_message.hpp>
#include <scwx/util/logger.hpp>
#include <scwx/util/rangebuf.hpp> #include <scwx/util/rangebuf.hpp>
#include <istream> #include <istream>
@ -7,7 +8,6 @@
#include <boost/iostreams/copy.hpp> #include <boost/iostreams/copy.hpp>
#include <boost/iostreams/filtering_streambuf.hpp> #include <boost/iostreams/filtering_streambuf.hpp>
#include <boost/iostreams/filter/bzip2.hpp> #include <boost/iostreams/filter/bzip2.hpp>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
@ -17,7 +17,8 @@ namespace rpg
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ =
"[scwx::wsr88d::rpg::graphic_product_message] "; "scwx::wsr88d::rpg::graphic_product_message";
static const auto logger_ = util::Logger::Create(logPrefix_);
class GraphicProductMessageImpl class GraphicProductMessageImpl
{ {
@ -102,17 +103,14 @@ bool GraphicProductMessage::Parse(std::istream& is)
{ {
std::stringstream ss; std::stringstream ss;
std::streamsize bytesCopied = boost::iostreams::copy(in, ss); std::streamsize bytesCopied = boost::iostreams::copy(in, ss);
BOOST_LOG_TRIVIAL(trace) logger_->trace("Decompressed data size = {} bytes", bytesCopied);
<< logPrefix_ << "Decompressed data size = " << bytesCopied
<< " bytes";
dataValid = p->LoadBlocks(ss); dataValid = p->LoadBlocks(ss);
} }
catch (const boost::iostreams::bzip2_error& ex) catch (const boost::iostreams::bzip2_error& ex)
{ {
int error = ex.error(); int error = ex.error();
BOOST_LOG_TRIVIAL(warning) logger_->warn("Error decompressing data: {}", ex.what());
<< logPrefix_ << "Error decompressing data: " << ex.what();
dataValid = false; dataValid = false;
} }
@ -138,7 +136,7 @@ bool GraphicProductMessageImpl::LoadBlocks(std::istream& is)
bool graphicValid = true; bool graphicValid = true;
bool tabularValid = true; bool tabularValid = true;
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Loading Blocks"; logger_->debug("Loading Blocks");
std::streampos offsetBasePos = is.tellg(); std::streampos offsetBasePos = is.tellg();
@ -157,8 +155,7 @@ bool GraphicProductMessageImpl::LoadBlocks(std::istream& is)
symbologyValid = symbologyBlock_->Parse(is); symbologyValid = symbologyBlock_->Parse(is);
is.seekg(offsetBasePos, std::ios_base::beg); is.seekg(offsetBasePos, std::ios_base::beg);
BOOST_LOG_TRIVIAL(debug) logger_->debug("Product symbology block valid: {}", symbologyValid);
<< logPrefix_ << "Product symbology block valid: " << symbologyValid;
if (!symbologyValid) if (!symbologyValid)
{ {
@ -174,8 +171,7 @@ bool GraphicProductMessageImpl::LoadBlocks(std::istream& is)
graphicValid = graphicBlock_->Parse(is); graphicValid = graphicBlock_->Parse(is);
is.seekg(offsetBasePos, std::ios_base::beg); is.seekg(offsetBasePos, std::ios_base::beg);
BOOST_LOG_TRIVIAL(debug) logger_->debug("Graphic alphanumeric block valid: {}", graphicValid);
<< logPrefix_ << "Graphic alphanumeric block valid: " << graphicValid;
if (!graphicValid) if (!graphicValid)
{ {
@ -191,8 +187,7 @@ bool GraphicProductMessageImpl::LoadBlocks(std::istream& is)
tabularValid = tabularBlock_->Parse(is); tabularValid = tabularBlock_->Parse(is);
is.seekg(offsetBasePos, std::ios_base::beg); is.seekg(offsetBasePos, std::ios_base::beg);
BOOST_LOG_TRIVIAL(debug) logger_->debug("Tabular alphanumeric block valid: {}", tabularValid);
<< logPrefix_ << "Tabular alphanumeric block valid: " << tabularValid;
if (!tabularValid) if (!tabularValid)
{ {

View file

@ -1,10 +1,9 @@
#include <scwx/wsr88d/rpg/hda_hail_symbol_packet.hpp> #include <scwx/wsr88d/rpg/hda_hail_symbol_packet.hpp>
#include <scwx/util/logger.hpp>
#include <istream> #include <istream>
#include <string> #include <string>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -13,7 +12,8 @@ namespace rpg
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ =
"[scwx::wsr88d::rpg::hda_hail_symbol_packet] "; "scwx::wsr88d::rpg::hda_hail_symbol_packet";
static const auto logger_ = util::Logger::Create(logPrefix_);
struct HdaHailSymbol struct HdaHailSymbol
{ {
@ -90,8 +90,7 @@ bool HdaHailSymbolPacket::ParseData(std::istream& is)
if (packet_code() != 19) if (packet_code() != 19)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid packet code: {}", packet_code());
<< logPrefix_ << "Invalid packet code: " << packet_code();
blockValid = false; blockValid = false;
} }

View file

@ -1,7 +1,5 @@
#include <scwx/wsr88d/rpg/level3_message.hpp> #include <scwx/wsr88d/rpg/level3_message.hpp>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -9,7 +7,7 @@ namespace wsr88d
namespace rpg namespace rpg
{ {
static const std::string logPrefix_ = "[scwx::wsr88d::rpg::level3_message] "; static const std::string logPrefix_ = "scwx::wsr88d::rpg::level3_message";
class Level3MessageImpl class Level3MessageImpl
{ {

View file

@ -1,5 +1,6 @@
#include <scwx/wsr88d/rpg/level3_message_factory.hpp> #include <scwx/wsr88d/rpg/level3_message_factory.hpp>
#include <scwx/util/logger.hpp>
#include <scwx/util/vectorbuf.hpp> #include <scwx/util/vectorbuf.hpp>
#include <scwx/wsr88d/rpg/general_status_message.hpp> #include <scwx/wsr88d/rpg/general_status_message.hpp>
#include <scwx/wsr88d/rpg/graphic_product_message.hpp> #include <scwx/wsr88d/rpg/graphic_product_message.hpp>
@ -9,8 +10,6 @@
#include <unordered_map> #include <unordered_map>
#include <vector> #include <vector>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -19,7 +18,8 @@ namespace rpg
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ =
"[scwx::wsr88d::rpg::level3_message_factory] "; "scwx::wsr88d::rpg::level3_message_factory";
static const auto logger_ = util::Logger::Create(logPrefix_);
typedef std::function<std::shared_ptr<Level3Message>(Level3MessageHeader&&, typedef std::function<std::shared_ptr<Level3Message>(Level3MessageHeader&&,
std::istream&)> std::istream&)>
@ -133,8 +133,7 @@ std::shared_ptr<Level3Message> Level3MessageFactory::Create(std::istream& is)
if (headerValid && create_.find(header.message_code()) == create_.end()) if (headerValid && create_.find(header.message_code()) == create_.end())
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Unknown message type: {}", header.message_code());
<< logPrefix_ << "Unknown message type: " << header.message_code();
messageValid = false; messageValid = false;
} }
@ -143,7 +142,7 @@ std::shared_ptr<Level3Message> Level3MessageFactory::Create(std::istream& is)
int16_t messageCode = header.message_code(); int16_t messageCode = header.message_code();
size_t dataSize = header.length_of_message() - Level3MessageHeader::SIZE; size_t dataSize = header.length_of_message() - Level3MessageHeader::SIZE;
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Found Message " << messageCode; logger_->debug("Found Message {}", messageCode);
message = create_.at(messageCode)(std::move(header), is); message = create_.at(messageCode)(std::move(header), is);
} }

View file

@ -1,10 +1,9 @@
#include <scwx/wsr88d/rpg/level3_message_header.hpp> #include <scwx/wsr88d/rpg/level3_message_header.hpp>
#include <scwx/util/logger.hpp>
#include <istream> #include <istream>
#include <string> #include <string>
#include <boost/log/trivial.hpp>
#ifdef WIN32 #ifdef WIN32
# include <WinSock2.h> # include <WinSock2.h>
#else #else
@ -19,7 +18,8 @@ namespace rpg
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ =
"[scwx::wsr88d::rpg::level3_message_header] "; "scwx::wsr88d::rpg::level3_message_header";
static const auto logger_ = util::Logger::Create(logPrefix_);
class Level3MessageHeaderImpl class Level3MessageHeaderImpl
{ {
@ -113,7 +113,7 @@ bool Level3MessageHeader::Parse(std::istream& is)
if (is.eof()) if (is.eof())
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Reached end of file"; logger_->debug("Reached end of file");
headerValid = false; headerValid = false;
} }
else else
@ -122,52 +122,44 @@ bool Level3MessageHeader::Parse(std::istream& is)
(p->messageCode_ > -16 && p->messageCode_ < 0) || (p->messageCode_ > -16 && p->messageCode_ < 0) ||
p->messageCode_ > 211) p->messageCode_ > 211)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid message code: {}", p->messageCode_);
<< logPrefix_ << "Invalid message code: " << p->messageCode_;
headerValid = false; headerValid = false;
} }
if (p->dateOfMessage_ > 32'767u) if (p->dateOfMessage_ > 32'767u)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid date: {}", p->dateOfMessage_);
<< logPrefix_ << "Invalid date: " << p->dateOfMessage_;
headerValid = false; headerValid = false;
} }
if (p->timeOfMessage_ > 86'399u) if (p->timeOfMessage_ > 86'399u)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid time: {}", p->timeOfMessage_);
<< logPrefix_ << "Invalid time: " << p->timeOfMessage_;
headerValid = false; headerValid = false;
} }
if (p->lengthOfMessage_ < 18 || p->lengthOfMessage_ > 1'329'270u) if (p->lengthOfMessage_ < 18 || p->lengthOfMessage_ > 1'329'270u)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid length: {}", p->lengthOfMessage_);
<< logPrefix_ << "Invalid length: " << p->lengthOfMessage_;
headerValid = false; headerValid = false;
} }
if ((p->sourceId_ > 999u && p->sourceId_ < 3000) || p->sourceId_ > 3045) if ((p->sourceId_ > 999u && p->sourceId_ < 3000) || p->sourceId_ > 3045)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid source ID: {}", p->sourceId_);
<< logPrefix_ << "Invalid source ID: " << p->sourceId_;
headerValid = false; headerValid = false;
} }
if (p->destinationId_ > 999u) if (p->destinationId_ > 999u)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid destination ID: {}", p->destinationId_);
<< logPrefix_ << "Invalid destination ID: " << p->destinationId_;
headerValid = false; headerValid = false;
} }
if (p->numberBlocks_ < 1u || p->numberBlocks_ > 51u) if (p->numberBlocks_ < 1u || p->numberBlocks_ > 51u)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid block count: {}", p->numberBlocks_);
<< logPrefix_ << "Invalid block count: " << p->numberBlocks_;
headerValid = false; headerValid = false;
} }
} }
if (headerValid) if (headerValid)
{ {
BOOST_LOG_TRIVIAL(trace) logger_->trace("Message code: {}", p->messageCode_);
<< logPrefix_ << "Message code: " << p->messageCode_;
} }
return headerValid; return headerValid;

View file

@ -1,10 +1,9 @@
#include <scwx/wsr88d/rpg/linked_contour_vector_packet.hpp> #include <scwx/wsr88d/rpg/linked_contour_vector_packet.hpp>
#include <scwx/util/logger.hpp>
#include <istream> #include <istream>
#include <string> #include <string>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -13,7 +12,8 @@ namespace rpg
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ =
"[scwx::wsr88d::rpg::linked_contour_vector_packet] "; "scwx::wsr88d::rpg::linked_contour_vector_packet";
static const auto logger_ = util::Logger::Create(logPrefix_);
class LinkedContourVectorPacketImpl class LinkedContourVectorPacketImpl
{ {
@ -93,22 +93,20 @@ bool LinkedContourVectorPacket::Parse(std::istream& is)
if (is.eof()) if (is.eof())
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Reached end of file"; logger_->debug("Reached end of file");
blockValid = false; blockValid = false;
} }
else else
{ {
if (p->packetCode_ != 0x0E03) if (p->packetCode_ != 0x0E03)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid packet code: {}", p->packetCode_);
<< logPrefix_ << "Invalid packet code: " << p->packetCode_;
blockValid = false; blockValid = false;
} }
if (p->initialPointIndicator_ != 0x8000) if (p->initialPointIndicator_ != 0x8000)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid initial point indicator: {}",
<< logPrefix_ p->initialPointIndicator_);
<< "Invalid initial point indicator: " << p->initialPointIndicator_;
blockValid = false; blockValid = false;
} }
} }

View file

@ -1,10 +1,9 @@
#include <scwx/wsr88d/rpg/linked_vector_packet.hpp> #include <scwx/wsr88d/rpg/linked_vector_packet.hpp>
#include <scwx/util/logger.hpp>
#include <istream> #include <istream>
#include <string> #include <string>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -12,8 +11,8 @@ namespace wsr88d
namespace rpg namespace rpg
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ = "scwx::wsr88d::rpg::linked_vector_packet";
"[scwx::wsr88d::rpg::linked_vector_packet] "; static const auto logger_ = util::Logger::Create(logPrefix_);
class LinkedVectorPacketImpl class LinkedVectorPacketImpl
{ {
@ -93,7 +92,7 @@ bool LinkedVectorPacket::Parse(std::istream& is)
if (is.eof()) if (is.eof())
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Reached end of file"; logger_->debug("Reached end of file");
blockValid = false; blockValid = false;
} }
else if (p->packetCode_ == 9) else if (p->packetCode_ == 9)
@ -107,8 +106,7 @@ bool LinkedVectorPacket::Parse(std::istream& is)
{ {
if (p->packetCode_ != 6 && p->packetCode_ != 9) if (p->packetCode_ != 6 && p->packetCode_ != 9)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid packet code: {}", p->packetCode_);
<< logPrefix_ << "Invalid packet code: " << p->packetCode_;
blockValid = false; blockValid = false;
} }
} }

View file

@ -1,11 +1,10 @@
#include <scwx/wsr88d/rpg/mesocyclone_symbol_packet.hpp> #include <scwx/wsr88d/rpg/mesocyclone_symbol_packet.hpp>
#include <scwx/util/logger.hpp>
#include <istream> #include <istream>
#include <set> #include <set>
#include <string> #include <string>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -14,7 +13,8 @@ namespace rpg
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ =
"[scwx::wsr88d::rpg::mesocyclone_symbol_packet] "; "scwx::wsr88d::rpg::mesocyclone_symbol_packet";
static const auto logger_ = util::Logger::Create(logPrefix_);
static const std::set<uint16_t> packetCodes_ = {3, 11}; static const std::set<uint16_t> packetCodes_ = {3, 11};
@ -77,8 +77,7 @@ bool MesocycloneSymbolPacket::ParseData(std::istream& is)
if (!packetCodes_.contains(packet_code())) if (!packetCodes_.contains(packet_code()))
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid packet code: {}", packet_code());
<< logPrefix_ << "Invalid packet code: " << packet_code();
blockValid = false; blockValid = false;
} }

View file

@ -7,7 +7,7 @@ namespace wsr88d
namespace rpg namespace rpg
{ {
static const std::string logPrefix_ = "[scwx::wsr88d::rpg::packet] "; static const std::string logPrefix_ = "scwx::wsr88d::rpg::packet";
Packet::Packet() = default; Packet::Packet() = default;
Packet::~Packet() = default; Packet::~Packet() = default;

View file

@ -1,5 +1,6 @@
#include <scwx/wsr88d/rpg/packet_factory.hpp> #include <scwx/wsr88d/rpg/packet_factory.hpp>
#include <scwx/util/logger.hpp>
#include <scwx/wsr88d/rpg/cell_trend_data_packet.hpp> #include <scwx/wsr88d/rpg/cell_trend_data_packet.hpp>
#include <scwx/wsr88d/rpg/cell_trend_volume_scan_times.hpp> #include <scwx/wsr88d/rpg/cell_trend_volume_scan_times.hpp>
#include <scwx/wsr88d/rpg/digital_precipitation_data_array_packet.hpp> #include <scwx/wsr88d/rpg/digital_precipitation_data_array_packet.hpp>
@ -26,8 +27,6 @@
#include <unordered_map> #include <unordered_map>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -35,7 +34,8 @@ namespace wsr88d
namespace rpg namespace rpg
{ {
static const std::string logPrefix_ = "[scwx::wsr88d::rpg::packet_factory] "; static const std::string logPrefix_ = "scwx::wsr88d::rpg::packet_factory";
static const auto logger_ = util::Logger::Create(logPrefix_);
typedef std::function<std::shared_ptr<Packet>(std::istream&)> typedef std::function<std::shared_ptr<Packet>(std::istream&)>
CreateMessageFunction; CreateMessageFunction;
@ -95,17 +95,13 @@ std::shared_ptr<Packet> PacketFactory::Create(std::istream& is)
if (packetValid && create_.find(packetCode) == create_.end()) if (packetValid && create_.find(packetCode) == create_.end())
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Unknown packet code: {0} (0x{0:x})", packetCode);
<< logPrefix_ << "Unknown packet code: " << packetCode << " (0x"
<< std::hex << packetCode << std::dec << ")";
packetValid = false; packetValid = false;
} }
if (packetValid) if (packetValid)
{ {
BOOST_LOG_TRIVIAL(trace) logger_->trace("Found packet code: {0} (0x{0:x})", packetCode);
<< logPrefix_ << "Found packet code: " << packetCode << " (0x"
<< std::hex << packetCode << std::dec << ")";
packet = create_.at(packetCode)(is); packet = create_.at(packetCode)(is);
} }

View file

@ -1,10 +1,9 @@
#include <scwx/wsr88d/rpg/point_feature_symbol_packet.hpp> #include <scwx/wsr88d/rpg/point_feature_symbol_packet.hpp>
#include <scwx/util/logger.hpp>
#include <istream> #include <istream>
#include <string> #include <string>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -13,7 +12,8 @@ namespace rpg
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ =
"[scwx::wsr88d::rpg::point_feature_symbol_packet] "; "scwx::wsr88d::rpg::point_feature_symbol_packet";
static const auto logger_ = util::Logger::Create(logPrefix_);
struct PointFeature struct PointFeature
{ {
@ -95,8 +95,7 @@ bool PointFeatureSymbolPacket::ParseData(std::istream& is)
if (packet_code() != 20) if (packet_code() != 20)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid packet code: {}", packet_code());
<< logPrefix_ << "Invalid packet code: " << packet_code();
blockValid = false; blockValid = false;
} }

View file

@ -1,11 +1,10 @@
#include <scwx/wsr88d/rpg/point_graphic_symbol_packet.hpp> #include <scwx/wsr88d/rpg/point_graphic_symbol_packet.hpp>
#include <scwx/util/logger.hpp>
#include <istream> #include <istream>
#include <set> #include <set>
#include <string> #include <string>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -14,7 +13,8 @@ namespace rpg
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ =
"[scwx::wsr88d::rpg::point_graphic_symbol_packet] "; "scwx::wsr88d::rpg::point_graphic_symbol_packet";
static const auto logger_ = util::Logger::Create(logPrefix_);
static const std::set<uint16_t> packetCodes_ = {12, 13, 14, 26}; static const std::set<uint16_t> packetCodes_ = {12, 13, 14, 26};
@ -70,8 +70,7 @@ bool PointGraphicSymbolPacket::ParseData(std::istream& is)
if (!packetCodes_.contains(packet_code())) if (!packetCodes_.contains(packet_code()))
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid packet code: {}", packet_code());
<< logPrefix_ << "Invalid packet code: " << packet_code();
blockValid = false; blockValid = false;
} }

View file

@ -1,10 +1,9 @@
#include <scwx/wsr88d/rpg/precipitation_rate_data_array_packet.hpp> #include <scwx/wsr88d/rpg/precipitation_rate_data_array_packet.hpp>
#include <scwx/util/logger.hpp>
#include <istream> #include <istream>
#include <string> #include <string>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -13,7 +12,8 @@ namespace rpg
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ =
"[scwx::wsr88d::rpg::precipitation_rate_data_array_packet] "; "scwx::wsr88d::rpg::precipitation_rate_data_array_packet";
static const auto logger_ = util::Logger::Create(logPrefix_);
class PrecipitationRateDataArrayPacketImpl class PrecipitationRateDataArrayPacketImpl
{ {
@ -94,21 +94,19 @@ bool PrecipitationRateDataArrayPacket::Parse(std::istream& is)
if (is.eof()) if (is.eof())
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Reached end of file"; logger_->debug("Reached end of file");
blockValid = false; blockValid = false;
} }
else else
{ {
if (p->packetCode_ != 18) if (p->packetCode_ != 18)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid packet code: {}", p->packetCode_);
<< logPrefix_ << "Invalid packet code: " << p->packetCode_;
blockValid = false; blockValid = false;
} }
if (p->numberOfRows_ != 13) if (p->numberOfRows_ != 13)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid number of rows: {}", p->numberOfRows_);
<< logPrefix_ << "Invalid number of rows: " << p->numberOfRows_;
blockValid = false; blockValid = false;
} }
} }
@ -131,10 +129,9 @@ bool PrecipitationRateDataArrayPacket::Parse(std::istream& is)
if (row.numberOfBytes_ < 2 || row.numberOfBytes_ > 14 || if (row.numberOfBytes_ < 2 || row.numberOfBytes_ > 14 ||
row.numberOfBytes_ % 2 != 0) row.numberOfBytes_ % 2 != 0)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid number of bytes in row: {} (Row {})",
<< logPrefix_ row.numberOfBytes_,
<< "Invalid number of bytes in row: " << row.numberOfBytes_ r);
<< " (Row " << r << ")";
blockValid = false; blockValid = false;
break; break;
} }

View file

@ -1,13 +1,12 @@
#include <scwx/wsr88d/rpg/product_description_block.hpp> #include <scwx/wsr88d/rpg/product_description_block.hpp>
#include <scwx/util/float.hpp> #include <scwx/util/float.hpp>
#include <scwx/util/logger.hpp>
#include <array> #include <array>
#include <istream> #include <istream>
#include <set> #include <set>
#include <string> #include <string>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -16,7 +15,8 @@ namespace rpg
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ =
"[scwx::wsr88d::rpg::product_description_block] "; "scwx::wsr88d::rpg::product_description_block";
static const auto logger_ = util::Logger::Create(logPrefix_);
static const std::set<int16_t> compressedProducts_ = { static const std::set<int16_t> compressedProducts_ = {
32, 94, 99, 134, 135, 138, 149, 152, 153, 154, 155, 32, 94, 99, 134, 135, 138, 149, 152, 153, 154, 155,
@ -660,31 +660,28 @@ bool ProductDescriptionBlock::Parse(std::istream& is)
if (is.eof()) if (is.eof())
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Reached end of file"; logger_->debug("Reached end of file");
blockValid = false; blockValid = false;
} }
else else
{ {
if (p->blockDivider_ != -1) if (p->blockDivider_ != -1)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid block divider: {}", p->blockDivider_);
<< logPrefix_ << "Invalid block divider: " << p->blockDivider_;
blockValid = false; blockValid = false;
} }
if (p->productCode_ < -299 || if (p->productCode_ < -299 ||
(p->productCode_ > -16 && p->productCode_ < 16) || (p->productCode_ > -16 && p->productCode_ < 16) ||
p->productCode_ > 299) p->productCode_ > 299)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid product code: {}", p->productCode_);
<< logPrefix_ << "Invalid product code: " << p->productCode_;
blockValid = false; blockValid = false;
} }
} }
if (blockValid) if (blockValid)
{ {
BOOST_LOG_TRIVIAL(trace) logger_->trace("Product code: {}", p->productCode_);
<< logPrefix_ << "Product code: " << p->productCode_;
} }
const std::streampos blockEnd = is.tellg(); const std::streampos blockEnd = is.tellg();

View file

@ -1,11 +1,10 @@
#include <scwx/wsr88d/rpg/product_symbology_block.hpp> #include <scwx/wsr88d/rpg/product_symbology_block.hpp>
#include <scwx/wsr88d/rpg/packet_factory.hpp> #include <scwx/wsr88d/rpg/packet_factory.hpp>
#include <scwx/util/logger.hpp>
#include <istream> #include <istream>
#include <string> #include <string>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -14,7 +13,8 @@ namespace rpg
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ =
"[scwx::wsr88d::rpg::product_symbology_block] "; "scwx::wsr88d::rpg::product_symbology_block";
static const auto logger_ = util::Logger::Create(logPrefix_);
class ProductSymbologyBlockImpl class ProductSymbologyBlockImpl
{ {
@ -87,33 +87,29 @@ bool ProductSymbologyBlock::Parse(std::istream& is)
if (is.eof()) if (is.eof())
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Reached end of file"; logger_->debug("Reached end of file");
blockValid = false; blockValid = false;
} }
else else
{ {
if (p->blockDivider_ != -1) if (p->blockDivider_ != -1)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid block divider: {}", p->blockDivider_);
<< logPrefix_ << "Invalid block divider: " << p->blockDivider_;
blockValid = false; blockValid = false;
} }
if (p->blockId_ != 1) if (p->blockId_ != 1)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid block ID: {}", p->blockId_);
<< logPrefix_ << "Invalid block ID: " << p->blockId_;
blockValid = false; blockValid = false;
} }
if (p->lengthOfBlock_ < 10) if (p->lengthOfBlock_ < 10)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid block length: {}", p->lengthOfBlock_);
<< logPrefix_ << "Invalid block length: " << p->lengthOfBlock_;
blockValid = false; blockValid = false;
} }
if (p->numberOfLayers_ < 1 || p->numberOfLayers_ > 18) if (p->numberOfLayers_ < 1 || p->numberOfLayers_ > 18)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid number of layers: {}", p->numberOfLayers_);
<< logPrefix_ << "Invalid number of layers: " << p->numberOfLayers_;
blockValid = false; blockValid = false;
} }
} }
@ -125,7 +121,7 @@ bool ProductSymbologyBlock::Parse(std::istream& is)
for (uint16_t i = 0; i < p->numberOfLayers_; i++) for (uint16_t i = 0; i < p->numberOfLayers_; i++)
{ {
BOOST_LOG_TRIVIAL(trace) << logPrefix_ << "Layer " << i; logger_->trace("Layer {}", i);
std::vector<std::shared_ptr<Packet>> packetList; std::vector<std::shared_ptr<Packet>> packetList;
uint32_t bytesRead = 0; uint32_t bytesRead = 0;
@ -156,19 +152,17 @@ bool ProductSymbologyBlock::Parse(std::istream& is)
if (bytesRead < lengthOfDataLayer) if (bytesRead < lengthOfDataLayer)
{ {
BOOST_LOG_TRIVIAL(trace) logger_->trace("Layer bytes read smaller than size: {} < {} bytes",
<< logPrefix_ bytesRead,
<< "Layer bytes read smaller than size: " << bytesRead << " < " lengthOfDataLayer);
<< lengthOfDataLayer << " bytes";
blockValid = false; blockValid = false;
is.seekg(layerEnd, std::ios_base::beg); is.seekg(layerEnd, std::ios_base::beg);
} }
if (bytesRead > lengthOfDataLayer) if (bytesRead > lengthOfDataLayer)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Layer bytes read larger than size: {} > {} bytes",
<< logPrefix_ bytesRead,
<< "Layer bytes read larger than size: " << bytesRead << " > " lengthOfDataLayer);
<< lengthOfDataLayer << " bytes";
blockValid = false; blockValid = false;
is.seekg(layerEnd, std::ios_base::beg); is.seekg(layerEnd, std::ios_base::beg);
} }

View file

@ -1,10 +1,9 @@
#include <scwx/wsr88d/rpg/radar_coded_message.hpp> #include <scwx/wsr88d/rpg/radar_coded_message.hpp>
#include <scwx/util/logger.hpp>
#include <istream> #include <istream>
#include <string> #include <string>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -12,8 +11,8 @@ namespace wsr88d
namespace rpg namespace rpg
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ = "scwx::wsr88d::rpg::radar_coded_message";
"[scwx::wsr88d::rpg::radar_coded_message] "; static const auto logger_ = util::Logger::Create(logPrefix_);
class RadarCodedMessageImpl class RadarCodedMessageImpl
{ {
@ -77,7 +76,7 @@ bool RadarCodedMessage::Parse(std::istream& is)
bool RadarCodedMessageImpl::LoadBlocks(std::istream& is) bool RadarCodedMessageImpl::LoadBlocks(std::istream& is)
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Loading Blocks"; logger_->debug("Loading Blocks");
pupSiteIdentifier_.resize(4); pupSiteIdentifier_.resize(4);
productCategory_.resize(5); productCategory_.resize(5);

View file

@ -1,10 +1,9 @@
#include <scwx/wsr88d/rpg/radial_data_packet.hpp> #include <scwx/wsr88d/rpg/radial_data_packet.hpp>
#include <scwx/util/logger.hpp>
#include <istream> #include <istream>
#include <string> #include <string>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -12,8 +11,8 @@ namespace wsr88d
namespace rpg namespace rpg
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ = "scwx::wsr88d::rpg::radial_data_packet";
"[scwx::wsr88d::rpg::radial_data_packet] "; static const auto logger_ = util::Logger::Create(logPrefix_);
class RadialDataPacketImpl class RadialDataPacketImpl
{ {
@ -152,29 +151,25 @@ bool RadialDataPacket::Parse(std::istream& is)
if (is.eof()) if (is.eof())
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Reached end of file"; logger_->debug("Reached end of file");
blockValid = false; blockValid = false;
} }
else else
{ {
if (p->packetCode_ != 0xAF1F) if (p->packetCode_ != 0xAF1F)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid packet code: {}", p->packetCode_);
<< logPrefix_ << "Invalid packet code: " << p->packetCode_;
blockValid = false; blockValid = false;
} }
if (p->numberOfRangeBins_ < 1 || p->numberOfRangeBins_ > 460) if (p->numberOfRangeBins_ < 1 || p->numberOfRangeBins_ > 460)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid number of range bins: {}",
<< logPrefix_ p->numberOfRangeBins_);
<< "Invalid number of range bins: " << p->numberOfRangeBins_;
blockValid = false; blockValid = false;
} }
if (p->numberOfRadials_ < 1 || p->numberOfRadials_ > 400) if (p->numberOfRadials_ < 1 || p->numberOfRadials_ > 400)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid number of radials: {}", p->numberOfRadials_);
<< logPrefix_
<< "Invalid number of radials: " << p->numberOfRadials_;
blockValid = false; blockValid = false;
} }
} }
@ -199,9 +194,9 @@ bool RadialDataPacket::Parse(std::istream& is)
if (radial.numberOfRleHalfwords_ < 1 || if (radial.numberOfRleHalfwords_ < 1 ||
radial.numberOfRleHalfwords_ > 230) radial.numberOfRleHalfwords_ > 230)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid number of RLE halfwords: {} (Radial {})",
<< logPrefix_ << "Invalid number of RLE halfwords: " radial.numberOfRleHalfwords_,
<< radial.numberOfRleHalfwords_ << " (Radial " << r << ")"; r);
blockValid = false; blockValid = false;
break; break;
} }

View file

@ -1,10 +1,9 @@
#include <scwx/wsr88d/rpg/raster_data_packet.hpp> #include <scwx/wsr88d/rpg/raster_data_packet.hpp>
#include <scwx/util/logger.hpp>
#include <istream> #include <istream>
#include <string> #include <string>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -12,8 +11,8 @@ namespace wsr88d
namespace rpg namespace rpg
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ = "scwx::wsr88d::rpg::raster_data_packet";
"[scwx::wsr88d::rpg::raster_data_packet] "; static const auto logger_ = util::Logger::Create(logPrefix_);
class RasterDataPacketImpl class RasterDataPacketImpl
{ {
@ -162,21 +161,19 @@ bool RasterDataPacket::Parse(std::istream& is)
if (is.eof()) if (is.eof())
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Reached end of file"; logger_->debug("Reached end of file");
blockValid = false; blockValid = false;
} }
else else
{ {
if (p->packetCode_ != 0xBA0F && p->packetCode_ != 0xBA07) if (p->packetCode_ != 0xBA0F && p->packetCode_ != 0xBA07)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid packet code: {}", p->packetCode_);
<< logPrefix_ << "Invalid packet code: " << p->packetCode_;
blockValid = false; blockValid = false;
} }
if (p->numberOfRows_ < 1 || p->numberOfRows_ > 464) if (p->numberOfRows_ < 1 || p->numberOfRows_ > 464)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid number of rows: {}", p->numberOfRows_);
<< logPrefix_ << "Invalid number of rows: " << p->numberOfRows_;
blockValid = false; blockValid = false;
} }
} }
@ -199,10 +196,9 @@ bool RasterDataPacket::Parse(std::istream& is)
if (row.numberOfBytes_ < 2 || row.numberOfBytes_ > 920 || if (row.numberOfBytes_ < 2 || row.numberOfBytes_ > 920 ||
row.numberOfBytes_ % 2 != 0) row.numberOfBytes_ % 2 != 0)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid number of bytes in row: {} (Row {})",
<< logPrefix_ row.numberOfBytes_,
<< "Invalid number of bytes in row: " << row.numberOfBytes_ r);
<< " (Row " << r << ")";
blockValid = false; blockValid = false;
break; break;
} }

View file

@ -1,11 +1,10 @@
#include <scwx/wsr88d/rpg/scit_forecast_data_packet.hpp> #include <scwx/wsr88d/rpg/scit_forecast_data_packet.hpp>
#include <scwx/util/logger.hpp>
#include <istream> #include <istream>
#include <set> #include <set>
#include <string> #include <string>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -14,7 +13,8 @@ namespace rpg
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ =
"[scwx::wsr88d::rpg::scit_forecast_data_packet] "; "scwx::wsr88d::rpg::scit_forecast_data_packet";
static const auto logger_ = util::Logger::Create(logPrefix_);
static const std::set<uint16_t> packetCodes_ = {23, 24}; static const std::set<uint16_t> packetCodes_ = {23, 24};
@ -55,8 +55,7 @@ bool ScitForecastDataPacket::ParseData(std::istream& is)
if (!packetCodes_.contains(packet_code())) if (!packetCodes_.contains(packet_code()))
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid packet code: {}", packet_code());
<< logPrefix_ << "Invalid packet code: " << packet_code();
blockValid = false; blockValid = false;
} }

View file

@ -1,10 +1,9 @@
#include <scwx/wsr88d/rpg/set_color_level_packet.hpp> #include <scwx/wsr88d/rpg/set_color_level_packet.hpp>
#include <scwx/util/logger.hpp>
#include <istream> #include <istream>
#include <string> #include <string>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -13,7 +12,8 @@ namespace rpg
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ =
"[scwx::wsr88d::rpg::set_color_level_packet] "; "scwx::wsr88d::rpg::set_color_level_packet";
static const auto logger_ = util::Logger::Create(logPrefix_);
class SetColorLevelPacketImpl class SetColorLevelPacketImpl
{ {
@ -76,22 +76,20 @@ bool SetColorLevelPacket::Parse(std::istream& is)
if (is.eof()) if (is.eof())
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Reached end of file"; logger_->debug("Reached end of file");
blockValid = false; blockValid = false;
} }
else else
{ {
if (p->packetCode_ != 0x0802) if (p->packetCode_ != 0x0802)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid packet code: {}", p->packetCode_);
<< logPrefix_ << "Invalid packet code: " << p->packetCode_;
blockValid = false; blockValid = false;
} }
if (p->colorValueIndicator_ != 0x0002) if (p->colorValueIndicator_ != 0x0002)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid color value indicator: {}",
<< logPrefix_ p->colorValueIndicator_);
<< "Invalid color value indicator: " << p->colorValueIndicator_;
blockValid = false; blockValid = false;
} }
} }

View file

@ -1,11 +1,10 @@
#include <scwx/wsr88d/rpg/special_graphic_symbol_packet.hpp> #include <scwx/wsr88d/rpg/special_graphic_symbol_packet.hpp>
#include <scwx/util/logger.hpp>
#include <istream> #include <istream>
#include <set> #include <set>
#include <string> #include <string>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -14,7 +13,8 @@ namespace rpg
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ =
"[scwx::wsr88d::rpg::special_graphic_symbol_packet] "; "scwx::wsr88d::rpg::special_graphic_symbol_packet";
static const auto logger_ = util::Logger::Create(logPrefix_);
static const std::set<uint16_t> packetCodes_ = { static const std::set<uint16_t> packetCodes_ = {
3, 11, 12, 13, 14, 15, 19, 20, 23, 24, 25, 26}; 3, 11, 12, 13, 14, 15, 19, 20, 23, 24, 25, 26};
@ -72,7 +72,7 @@ bool SpecialGraphicSymbolPacket::Parse(std::istream& is)
if (is.eof()) if (is.eof())
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Reached end of file"; logger_->debug("Reached end of file");
blockValid = false; blockValid = false;
} }
else else
@ -82,15 +82,13 @@ bool SpecialGraphicSymbolPacket::Parse(std::istream& is)
if (!packetCodes_.contains(p->packetCode_)) if (!packetCodes_.contains(p->packetCode_))
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid packet code: {}", p->packetCode_);
<< logPrefix_ << "Invalid packet code: " << p->packetCode_;
blockValid = false; blockValid = false;
} }
else if (p->lengthOfBlock_ < minBlockLength || else if (p->lengthOfBlock_ < minBlockLength ||
p->lengthOfBlock_ > maxBlockLength) p->lengthOfBlock_ > maxBlockLength)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid length of block: {}", p->lengthOfBlock_);
<< logPrefix_ << "Invalid length of block: " << p->packetCode_;
blockValid = false; blockValid = false;
} }
} }

View file

@ -1,10 +1,9 @@
#include <scwx/wsr88d/rpg/sti_circle_symbol_packet.hpp> #include <scwx/wsr88d/rpg/sti_circle_symbol_packet.hpp>
#include <scwx/util/logger.hpp>
#include <istream> #include <istream>
#include <string> #include <string>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -13,7 +12,8 @@ namespace rpg
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ =
"[scwx::wsr88d::rpg::sti_circle_symbol_packet] "; "scwx::wsr88d::rpg::sti_circle_symbol_packet";
static const auto logger_ = util::Logger::Create(logPrefix_);
struct StiCircleSymbol struct StiCircleSymbol
{ {
@ -71,8 +71,7 @@ bool StiCircleSymbolPacket::ParseData(std::istream& is)
if (packet_code() != 25) if (packet_code() != 25)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid packet code: {}", packet_code());
<< logPrefix_ << "Invalid packet code: " << packet_code();
blockValid = false; blockValid = false;
} }

View file

@ -1,10 +1,9 @@
#include <scwx/wsr88d/rpg/storm_id_symbol_packet.hpp> #include <scwx/wsr88d/rpg/storm_id_symbol_packet.hpp>
#include <scwx/util/logger.hpp>
#include <istream> #include <istream>
#include <string> #include <string>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -13,7 +12,8 @@ namespace rpg
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ =
"[scwx::wsr88d::rpg::storm_id_symbol_packet] "; "scwx::wsr88d::rpg::storm_id_symbol_packet";
static const auto logger_ = util::Logger::Create(logPrefix_);
struct StormIdSymbol struct StormIdSymbol
{ {
@ -71,8 +71,7 @@ bool StormIdSymbolPacket::ParseData(std::istream& is)
if (packet_code() != 15) if (packet_code() != 15)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid packet code: {}", packet_code());
<< logPrefix_ << "Invalid packet code: " << packet_code();
blockValid = false; blockValid = false;
} }

View file

@ -2,12 +2,11 @@
#include <scwx/wsr88d/rpg/level3_message_header.hpp> #include <scwx/wsr88d/rpg/level3_message_header.hpp>
#include <scwx/wsr88d/rpg/packet_factory.hpp> #include <scwx/wsr88d/rpg/packet_factory.hpp>
#include <scwx/wsr88d/rpg/product_description_block.hpp> #include <scwx/wsr88d/rpg/product_description_block.hpp>
#include <scwx/util/logger.hpp>
#include <istream> #include <istream>
#include <string> #include <string>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -16,7 +15,8 @@ namespace rpg
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ =
"[scwx::wsr88d::rpg::tabular_alphanumeric_block] "; "scwx::wsr88d::rpg::tabular_alphanumeric_block";
static const auto logger_ = util::Logger::Create(logPrefix_);
class TabularAlphanumericBlockImpl class TabularAlphanumericBlockImpl
{ {
@ -92,28 +92,24 @@ bool TabularAlphanumericBlock::Parse(std::istream& is, bool skipHeader)
if (is.eof()) if (is.eof())
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Reached end of file"; logger_->debug("Reached end of file");
blockValid = false; blockValid = false;
} }
else else
{ {
if (p->blockDivider1_ != -1) if (p->blockDivider1_ != -1)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid first block divider: {}", p->blockDivider1_);
<< logPrefix_
<< "Invalid first block divider: " << p->blockDivider1_;
blockValid = false; blockValid = false;
} }
if (p->blockId_ != 3) if (p->blockId_ != 3)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid block ID: {}", p->blockId_);
<< logPrefix_ << "Invalid block ID: " << p->blockId_;
blockValid = false; blockValid = false;
} }
if (p->lengthOfBlock_ < 10) if (p->lengthOfBlock_ < 10)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid block length: {}", p->lengthOfBlock_);
<< logPrefix_ << "Invalid block length: " << p->lengthOfBlock_;
blockValid = false; blockValid = false;
} }
} }
@ -151,15 +147,12 @@ bool TabularAlphanumericBlock::Parse(std::istream& is, bool skipHeader)
if (p->blockDivider2_ != -1) if (p->blockDivider2_ != -1)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid second block divider: {}", p->blockDivider2_);
<< logPrefix_
<< "Invalid second block divider: " << p->blockDivider2_;
blockValid = false; blockValid = false;
} }
if (p->numberOfPages_ < 1 || p->numberOfPages_ > 48) if (p->numberOfPages_ < 1 || p->numberOfPages_ > 48)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid number of pages: {}", p->numberOfPages_);
<< logPrefix_ << "Invalid number of pages: " << p->numberOfPages_;
blockValid = false; blockValid = false;
} }
} }
@ -184,10 +177,9 @@ bool TabularAlphanumericBlock::Parse(std::istream& is, bool skipHeader)
} }
else if (numberOfCharacters > 80) else if (numberOfCharacters > 80)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid number of characters: {} (Page {})",
<< logPrefix_ numberOfCharacters,
<< "Invalid number of characters: " << numberOfCharacters (i + 1));
<< " (Page " << (i + 1) << ")";
blockValid = false; blockValid = false;
break; break;
} }
@ -211,7 +203,7 @@ bool TabularAlphanumericBlock::Parse(std::istream& is, bool skipHeader)
} }
else if (skipHeader && is.eof()) else if (skipHeader && is.eof())
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Reached end of file"; logger_->debug("Reached end of file");
blockValid = false; blockValid = false;
} }

View file

@ -1,10 +1,9 @@
#include <scwx/wsr88d/rpg/tabular_product_message.hpp> #include <scwx/wsr88d/rpg/tabular_product_message.hpp>
#include <scwx/util/logger.hpp>
#include <istream> #include <istream>
#include <string> #include <string>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -13,7 +12,8 @@ namespace rpg
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ =
"[scwx::wsr88d::rpg::tabular_product_message] "; "scwx::wsr88d::rpg::tabular_product_message";
static const auto logger_ = util::Logger::Create(logPrefix_);
class TabularProductMessageImpl class TabularProductMessageImpl
{ {
@ -82,7 +82,7 @@ bool TabularProductMessageImpl::LoadBlocks(std::istream& is)
bool tabularValid = true; bool tabularValid = true;
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Loading Blocks"; logger_->debug("Loading Blocks");
std::streampos offsetBasePos = is.tellg(); std::streampos offsetBasePos = is.tellg();
@ -99,8 +99,7 @@ bool TabularProductMessageImpl::LoadBlocks(std::istream& is)
tabularValid = tabularBlock_->Parse(is, skipTabularHeader); tabularValid = tabularBlock_->Parse(is, skipTabularHeader);
is.seekg(offsetBasePos, std::ios_base::beg); is.seekg(offsetBasePos, std::ios_base::beg);
BOOST_LOG_TRIVIAL(debug) logger_->debug("Tabular alphanumeric block valid: {}", tabularValid);
<< logPrefix_ << "Tabular alphanumeric block valid: " << tabularValid;
if (!tabularValid) if (!tabularValid)
{ {

View file

@ -1,10 +1,9 @@
#include <scwx/wsr88d/rpg/text_and_special_symbol_packet.hpp> #include <scwx/wsr88d/rpg/text_and_special_symbol_packet.hpp>
#include <scwx/util/logger.hpp>
#include <istream> #include <istream>
#include <string> #include <string>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -13,7 +12,8 @@ namespace rpg
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ =
"[scwx::wsr88d::rpg::text_and_special_symbol_packet] "; "scwx::wsr88d::rpg::text_and_special_symbol_packet";
static const auto logger_ = util::Logger::Create(logPrefix_);
class TextAndSpecialSymbolPacketImpl class TextAndSpecialSymbolPacketImpl
{ {
@ -113,21 +113,19 @@ bool TextAndSpecialSymbolPacket::Parse(std::istream& is)
if (is.eof()) if (is.eof())
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Reached end of file"; logger_->debug("Reached end of file");
blockValid = false; blockValid = false;
} }
else else
{ {
if (p->packetCode_ != 1 && p->packetCode_ != 2 && p->packetCode_ != 8) if (p->packetCode_ != 1 && p->packetCode_ != 2 && p->packetCode_ != 8)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid packet code: {}", p->packetCode_);
<< logPrefix_ << "Invalid packet code: " << p->packetCode_;
blockValid = false; blockValid = false;
} }
else if (p->lengthOfBlock_ < 1 || p->lengthOfBlock_ > 32767) else if (p->lengthOfBlock_ < 1 || p->lengthOfBlock_ > 32767)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid length of block: {}", p->lengthOfBlock_);
<< logPrefix_ << "Invalid length of block: " << p->packetCode_;
blockValid = false; blockValid = false;
} }
else if (p->packetCode_ == 8) else if (p->packetCode_ == 8)
@ -141,8 +139,7 @@ bool TextAndSpecialSymbolPacket::Parse(std::istream& is)
if (blockValid && textLength < 0) if (blockValid && textLength < 0)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Too few bytes in block: {}", p->lengthOfBlock_);
<< logPrefix_ << "Too few bytes in block: " << p->lengthOfBlock_;
blockValid = false; blockValid = false;
} }

View file

@ -1,10 +1,9 @@
#include <scwx/wsr88d/rpg/unlinked_contour_vector_packet.hpp> #include <scwx/wsr88d/rpg/unlinked_contour_vector_packet.hpp>
#include <scwx/util/logger.hpp>
#include <istream> #include <istream>
#include <string> #include <string>
#include <boost/log/trivial.hpp>
namespace scwx namespace scwx
{ {
namespace wsr88d namespace wsr88d
@ -13,7 +12,8 @@ namespace rpg
{ {
static const std::string logPrefix_ = static const std::string logPrefix_ =
"[scwx::wsr88d::rpg::unlinked_contour_vector_packet] "; "scwx::wsr88d::rpg::unlinked_contour_vector_packet";
static const auto logger_ = util::Logger::Create(logPrefix_);
class UnlinkedContourVectorPacketImpl class UnlinkedContourVectorPacketImpl
{ {
@ -80,15 +80,14 @@ bool UnlinkedContourVectorPacket::Parse(std::istream& is)
if (is.eof()) if (is.eof())
{ {
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Reached end of file"; logger_->debug("Reached end of file");
blockValid = false; blockValid = false;
} }
else else
{ {
if (p->packetCode_ != 0x3501) if (p->packetCode_ != 0x3501)
{ {
BOOST_LOG_TRIVIAL(warning) logger_->warn("Invalid packet code: {}", p->packetCode_);
<< logPrefix_ << "Invalid packet code: " << p->packetCode_;
blockValid = false; blockValid = false;
} }
} }

Some files were not shown because too many files have changed in this diff Show more