From 36ecf84296d088426ecf27717c27625f6fd6ce18 Mon Sep 17 00:00:00 2001 From: delmon Date: Thu, 10 Mar 2011 16:20:52 +0000 Subject: [PATCH] Romulo: - Add command-line option to set a log file for VTK and ITK messages + option is --log + file is stored as date_time.log in /tmp/vv-log for the moment * still to find a better location, so that it works in Windows and Linux --- vv/vv.cxx | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/vv/vv.cxx b/vv/vv.cxx index a5ee061..8fcc382 100644 --- a/vv/vv.cxx +++ b/vv/vv.cxx @@ -17,6 +17,9 @@ ======================================================================-====*/ #include #include +#include +#include +#include #include #include #include @@ -27,12 +30,35 @@ #include "vvMainWindow.h" #include "vvConstants.h" +#include +#include +#include +#include + +#include +#include +#include + void load_image_first_error() { std::cerr << "You need to load an image before adding an overlay!" << std::endl; exit(1); } +std::string create_timed_string() +{ + time_t t; + time(&t); + + struct tm* pt = localtime(&t); + + const int size = 64; + char st[size]; + strftime(st, size, "%Y%m%d-%H%M%S", pt); + + return st; +} + //------------------------------------------------------------------------------ int main( int argc, char** argv ) { @@ -97,7 +123,23 @@ int main( int argc, char** argv ) parse_mode=P_WINDOW; } else if (current == "--level") { parse_mode=P_LEVEL; - } + } else if (current == "--log") { + std::string log_dir = "/tmp/vv-log"; + int err = mkdir(log_dir.c_str(), S_IRWXU | S_IRUSR | S_IWUSR | S_IRWXG | S_IRGRP | S_IWGRP | S_IRWXO | S_IROTH | S_IWOTH); + if (err && errno != EEXIST) + std::cout << "Error creating log directory with errno " << errno << std::endl; + + std::string log_file = log_dir + "/" + create_timed_string() + ".log"; + vtkSmartPointer vtk_log = vtkFileOutputWindow::New(); + vtk_log->SetFileName(log_file.c_str()); + vtk_log->FlushOn(); + vtkOutputWindow::SetInstance(vtk_log); + + itk::SmartPointer itk_log = itk::FileOutputWindow::New(); + itk_log->SetFileName(log_file.c_str()); + itk_log->FlushOn(); + itk::OutputWindow::SetInstance(itk_log); + } } else if (parse_mode == P_SEQUENCE) { sequence_filenames.push_back(current); } else if (parse_mode == P_WINDOW) { -- 2.45.1