Go to the documentation of this file.00001 #include "logging/GenerationalFileAppender.hpp"
00002 #include "ocl/Component.hpp"
00003 #include <rtt/Logger.hpp>
00004
00005 #include <log4cpp/GenerationalFileAppender.hh>
00006
00007 using namespace RTT;
00008
00009 namespace OCL {
00010 namespace logging {
00011
00012 GenerationalFileAppender::GenerationalFileAppender(std::string name) :
00013 OCL::logging::Appender(name),
00014 advanceGeneration_op("advanceGeneration", &GenerationalFileAppender::advanceGeneration, this, RTT::OwnThread),
00015 filename_prop("Filename", "Name of file to log to"),
00016 maxEventsPerCycle_prop("MaxEventsPerCycle",
00017 "Maximum number of log events to pop per cycle",
00018 1),
00019 maxEventsPerCycle(1)
00020 {
00021 provides()->addOperation(advanceGeneration_op).doc("Advance to the next logfile generation");
00022
00023 properties()->addProperty(filename_prop);
00024 properties()->addProperty(maxEventsPerCycle_prop);
00025 }
00026
00027 GenerationalFileAppender::~GenerationalFileAppender()
00028 {
00029 }
00030
00031 bool GenerationalFileAppender::configureHook()
00032 {
00033
00034 int m = maxEventsPerCycle_prop.rvalue();
00035 if ((0 > m))
00036 {
00037 log(Error) << "Invalid maxEventsPerCycle value of "
00038 << m << ". Value must be >= 0."
00039 << endlog();
00040 return false;
00041 }
00042 maxEventsPerCycle = m;
00043
00044
00045
00046 appender = new log4cpp::GenerationalFileAppender(getName(),
00047 filename_prop.get());
00048
00049 return configureLayout();
00050 }
00051
00052 void GenerationalFileAppender::updateHook()
00053 {
00054 processEvents(maxEventsPerCycle);
00055 }
00056
00057 void GenerationalFileAppender::cleanupHook()
00058 {
00059
00060
00061
00062
00063 delete appender;
00064 appender = 0;
00065 }
00066
00067 void GenerationalFileAppender::advanceGeneration()
00068 {
00069 if (0 != appender)
00070 {
00071 static_cast<log4cpp::GenerationalFileAppender*>(appender)->advanceGeneration();
00072 }
00073 else
00074 {
00075 log(Error) << "No appender to roll over!" << endlog();
00076 }
00077 }
00078
00079
00080 }
00081 }
00082
00083 ORO_LIST_COMPONENT_TYPE(OCL::logging::GenerationalFileAppender);