Revise to add cls_log

This commit is contained in:
Mr-Dave
2024-07-20 20:51:24 -06:00
parent aaacf0ea16
commit 3fc77925fd
8 changed files with 380 additions and 424 deletions

View File

@@ -425,7 +425,7 @@ static void algsec_params_log(ctx_dev *cam)
if (algmdl->method != "none") {
for (it = lst->begin(); it != lst->end(); it++) {
motpls_log(INF, TYPE_ALL, NO_ERRNO,0, NULL, "%-25s %s"
MOTPLS_SHT(INF, TYPE_ALL, NO_ERRNO, "%-25s %s"
,it->param_name.c_str(), it->param_value.c_str());
}
}

View File

@@ -3909,15 +3909,15 @@ void conf_parms_log_parm(std::string parm_nm, std::string parm_vl)
(parm_nm == "database_user") ||
(parm_nm == "database_password"))
{
motpls_log(INF, TYPE_ALL, NO_ERRNO, 0, NULL
MOTPLS_SHT(INF, TYPE_ALL, NO_ERRNO
,_("%-25s <redacted>"), parm_nm.c_str());
} else {
if ((parm_nm.compare(0,4,"text") == 0) ||
(parm_vl.compare(0,1, " ") != 0)) {
motpls_log(INF, TYPE_ALL, NO_ERRNO,0, NULL
MOTPLS_SHT(INF, TYPE_ALL, NO_ERRNO
, "%-25s %s", parm_nm.c_str(), parm_vl.c_str());
} else {
motpls_log(INF, TYPE_ALL, NO_ERRNO, 0, NULL
MOTPLS_SHT(INF, TYPE_ALL, NO_ERRNO
, "%-25s \"%s\"", parm_nm.c_str(), parm_vl.c_str());
}
}
@@ -3937,7 +3937,7 @@ void conf_parms_log(ctx_motapp *motapp)
MOTPLS_LOG(INF, TYPE_ALL, NO_ERRNO
,_("Logging configuration parameters from all files"));
motpls_log(INF, TYPE_ALL, NO_ERRNO,0, NULL
MOTPLS_SHT(INF, TYPE_ALL, NO_ERRNO
, _("Config file: %s"), motapp->conf->conf_filename.c_str());
i = 0;
@@ -3962,7 +3962,7 @@ void conf_parms_log(ctx_motapp *motapp)
}
for (indx=0; indx<motapp->cam_cnt; indx++) {
motpls_log(INF, TYPE_ALL, NO_ERRNO, 0, NULL
MOTPLS_SHT(INF, TYPE_ALL, NO_ERRNO
, _("Camera %d - Config file: %s")
, motapp->cam_list[indx]->conf->device_id
, motapp->cam_list[indx]->conf->conf_filename.c_str());
@@ -3989,7 +3989,7 @@ void conf_parms_log(ctx_motapp *motapp)
}
for (indx=0; indx<motapp->snd_cnt; indx++) {
motpls_log(INF, TYPE_ALL, NO_ERRNO, 0, NULL
MOTPLS_SHT(INF, TYPE_ALL, NO_ERRNO
, _("Sound %d - Config file: %s")
, motapp->snd_list[indx]->conf->device_id
, motapp->snd_list[indx]->conf->conf_filename.c_str());

View File

@@ -41,15 +41,15 @@ using namespace libcamera;
void cls_libcam::cam_log_orientation()
{
#if (LIBCAMVER >= 2000)
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, "Libcamera Orientation Options:");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " Rotate0");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " Rotate0Mirror");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " Rotate180");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " Rotate180Mirror");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " Rotate90");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " Rotate90Mirror");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " Rotate270");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " Rotate270Mirror");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, "Libcamera Orientation Options:");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " Rotate0");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " Rotate0Mirror");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " Rotate180");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " Rotate180Mirror");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " Rotate90");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " Rotate90Mirror");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " Rotate270");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " Rotate270Mirror");
#else
MOTPLS_LOG(NTC, TYPE_VIDEO, NO_ERRNO, "Orientation Not available");
#endif
@@ -59,163 +59,163 @@ void cls_libcam::cam_log_orientation()
void cls_libcam::cam_log_controls()
{
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, "Libcamera Controls:");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, "Libcamera Controls:");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AeEnable(bool)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AeLocked(bool)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AeEnable(bool)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AeLocked(bool)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AeMeteringMode(int)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " MeteringCentreWeighted = 0");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " MeteringSpot = 1");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " MeteringMatrix = 2");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " MeteringCustom = 3");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AeMeteringMode(int)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " MeteringCentreWeighted = 0");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " MeteringSpot = 1");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " MeteringMatrix = 2");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " MeteringCustom = 3");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AeConstraintMode(int)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " ConstraintNormal = 0");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " ConstraintHighlight = 1");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " ConstraintShadows = 2");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " ConstraintCustom = 3");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AeConstraintMode(int)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " ConstraintNormal = 0");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " ConstraintHighlight = 1");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " ConstraintShadows = 2");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " ConstraintCustom = 3");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AeExposureMode(int)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " ExposureNormal = 0");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " ExposureShort = 1");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " ExposureLong = 2");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " ExposureCustom = 3");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AeExposureMode(int)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " ExposureNormal = 0");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " ExposureShort = 1");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " ExposureLong = 2");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " ExposureCustom = 3");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " ExposureValue(float)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " ExposureTime(int)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AnalogueGain(float)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " Brightness(float)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " Contrast(float)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " Lux(float)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AwbEnable(bool)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " ExposureValue(float)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " ExposureTime(int)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AnalogueGain(float)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " Brightness(float)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " Contrast(float)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " Lux(float)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AwbEnable(bool)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AwbMode(int)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AwbAuto = 0");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AwbIncandescent = 1");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AwbTungsten = 2");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AwbFluorescent = 3");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AwbIndoor = 4");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AwbDaylight = 5");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AwbCloudy = 6");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AwbCustom = 7");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AwbMode(int)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AwbAuto = 0");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AwbIncandescent = 1");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AwbTungsten = 2");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AwbFluorescent = 3");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AwbIndoor = 4");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AwbDaylight = 5");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AwbCloudy = 6");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AwbCustom = 7");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AwbLocked(bool)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " ColourGains(Pipe delimited)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " Red | Blue");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " ColourTemperature(int)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " Saturation(float)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " SensorBlackLevels(Pipe delimited)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " var1|var2|var3|var4");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " Sharpness(float)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " FocusFoM(int)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " ColourCorrectionMatrix(Pipe delimited)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " var1|var2|...|var8|var9");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " ScalerCrop(Pipe delimited)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " x | y | h | w");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " DigitalGain(float)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " FrameDuration(int)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " FrameDurationLimits(Pipe delimited)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " min | max");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " SensorTemperature(float)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " SensorTimestamp(int)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AwbLocked(bool)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " ColourGains(Pipe delimited)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " Red | Blue");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " ColourTemperature(int)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " Saturation(float)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " SensorBlackLevels(Pipe delimited)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " var1|var2|var3|var4");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " Sharpness(float)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " FocusFoM(int)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " ColourCorrectionMatrix(Pipe delimited)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " var1|var2|...|var8|var9");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " ScalerCrop(Pipe delimited)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " x | y | h | w");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " DigitalGain(float)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " FrameDuration(int)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " FrameDurationLimits(Pipe delimited)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " min | max");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " SensorTemperature(float)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " SensorTimestamp(int)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AfMode(int)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AfModeManual = 0");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AfModeAuto = 1");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AfModeContinuous = 2");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AfMode(int)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AfModeManual = 0");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AfModeAuto = 1");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AfModeContinuous = 2");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AfRange(0-2)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AfRangeNormal = 0");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AfRangeMacro = 1");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AfRangeFull = 2");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AfRange(0-2)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AfRangeNormal = 0");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AfRangeMacro = 1");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AfRangeFull = 2");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AfSpeed(int)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AfSpeedNormal = 0");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AfSpeedFast = 1");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AfSpeed(int)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AfSpeedNormal = 0");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AfSpeedFast = 1");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AfMetering(int)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AfMeteringAuto = 0");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AfMeteringWindows = 1");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AfMetering(int)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AfMeteringAuto = 0");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AfMeteringWindows = 1");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AfWindows(Pipe delimited)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " x | y | h | w");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AfWindows(Pipe delimited)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " x | y | h | w");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AfTrigger(int)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AfTriggerStart = 0");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AfTriggerCancel = 1");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AfTrigger(int)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AfTriggerStart = 0");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AfTriggerCancel = 1");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AfPause(int)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AfPauseImmediate = 0");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AfPauseDeferred = 1");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AfPauseResume = 2");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AfPause(int)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AfPauseImmediate = 0");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AfPauseDeferred = 1");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AfPauseResume = 2");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " LensPosition(float)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " LensPosition(float)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AfState(int)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AfStateIdle = 0");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AfStateScanning = 1");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AfStateFocused = 2");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AfStateFailed = 3");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AfState(int)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AfStateIdle = 0");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AfStateScanning = 1");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AfStateFocused = 2");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AfStateFailed = 3");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AfPauseState(int)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AfPauseStateRunning = 0");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AfPauseStatePausing = 1");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AfPauseStatePaused = 2");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AfPauseState(int)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AfPauseStateRunning = 0");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AfPauseStatePausing = 1");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AfPauseStatePaused = 2");
}
void cls_libcam:: cam_log_draft()
{
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, "Libcamera Controls Draft:");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, "Libcamera Controls Draft:");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AePrecaptureTrigger(int)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AePrecaptureTriggerIdle = 0");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AePrecaptureTriggerStart = 1");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AePrecaptureTriggerCancel = 2");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AePrecaptureTrigger(int)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AePrecaptureTriggerIdle = 0");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AePrecaptureTriggerStart = 1");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AePrecaptureTriggerCancel = 2");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " NoiseReductionMode(int)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " NoiseReductionModeOff = 0");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " NoiseReductionModeFast = 1");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " NoiseReductionModeHighQuality = 2");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " NoiseReductionModeMinimal = 3");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " NoiseReductionModeZSL = 4");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " NoiseReductionMode(int)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " NoiseReductionModeOff = 0");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " NoiseReductionModeFast = 1");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " NoiseReductionModeHighQuality = 2");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " NoiseReductionModeMinimal = 3");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " NoiseReductionModeZSL = 4");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " ColorCorrectionAberrationMode(int)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " ColorCorrectionAberrationOff = 0");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " ColorCorrectionAberrationFast = 1");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " ColorCorrectionAberrationHighQuality = 2");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " ColorCorrectionAberrationMode(int)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " ColorCorrectionAberrationOff = 0");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " ColorCorrectionAberrationFast = 1");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " ColorCorrectionAberrationHighQuality = 2");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AeState(int)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AeStateSearching = 1");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AeStateConverged = 2");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AeStateLocked = 3");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AeStateFlashRequired = 4");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AeStatePrecapture = 5");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AeState(int)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AeStateSearching = 1");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AeStateConverged = 2");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AeStateLocked = 3");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AeStateFlashRequired = 4");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AeStatePrecapture = 5");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AwbState(int)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AwbStateInactive = 0");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AwbStateSearching = 1");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AwbConverged = 2");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " AwbLocked = 3");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AwbState(int)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AwbStateInactive = 0");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AwbStateSearching = 1");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AwbConverged = 2");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " AwbLocked = 3");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " SensorRollingShutterSkew(int)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " SensorRollingShutterSkew(int)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " LensShadingMapMode(int)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " LensShadingMapModeOff = 0");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " LensShadingMapModeOn = 1");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " LensShadingMapMode(int)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " LensShadingMapModeOff = 0");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " LensShadingMapModeOn = 1");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " PipelineDepth(int)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " PipelineDepth(int)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " MaxLatency(int)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " MaxLatency(int)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " TestPatternMode(int)");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " TestPatternModeOff = 0");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " TestPatternModeSolidColor = 1");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " TestPatternModeColorBars = 2");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " TestPatternModeColorBarsFadeToGray = 3");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " TestPatternModePn9 = 4");
motpls_log(DBG, TYPE_VIDEO, NO_ERRNO,0,NULL, " TestPatternModeCustom1 = 256");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " TestPatternMode(int)");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " TestPatternModeOff = 0");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " TestPatternModeSolidColor = 1");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " TestPatternModeColorBars = 2");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " TestPatternModeColorBarsFadeToGray = 3");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " TestPatternModePn9 = 4");
MOTPLS_SHT(DBG, TYPE_VIDEO, NO_ERRNO, " TestPatternModeCustom1 = 256");
}

View File

@@ -19,302 +19,248 @@
#include "conf.hpp"
#include "util.hpp"
#include "logger.hpp"
#include <stdarg.h>
#include <syslog.h>
static int log_mode = LOGMODE_SYSLOG;
static FILE *logfile = NULL;
static int log_level = LEVEL_DEFAULT;
static int log_type = TYPE_DEFAULT;
cls_log *motlog;
static const char *log_type_str[] = {NULL, "COR", "STR", "ENC", "NET", "DBS", "EVT", "TRK", "VID", "ALL"};
static const char *log_level_str[] = {NULL, "EMG", "ALR", "CRT", "ERR", "WRN", "NTC", "INF", "DBG", "ALL"};
static ctx_motapp *log_motapp; /*Used to access the parms mutex for updates*/
const char *log_type_str[] = {NULL, "COR", "STR", "ENC", "NET", "DBS", "EVT", "TRK", "VID", "ALL"};
const char *log_level_str[] = {NULL, "EMG", "ALR", "CRT", "ERR", "WRN", "NTC", "INF", "DBG", "ALL"};
/** Returns index of log type or 0 if not valid type. */
static int log_get_type(const char *type)
void ff_log(void *var1, int errnbr, const char *fmt, va_list vlist)
{
unsigned int i, ret = 0;
unsigned int maxtype = sizeof(log_type_str)/sizeof(const char *);
(void)var1;
char buff[1024];
int fflvl;
for (i = 1;i < maxtype; i++) {
if (!strncasecmp(type, log_type_str[i], 3)) {
ret = i;
break;
}
}
vsnprintf(buff, sizeof(buff), fmt, vlist);
return ret;
}
buff[strlen(buff)-1] = 0;
void log_set_type(const char *new_logtype)
{
if ( mystreq(new_logtype, log_type_str[log_type]) ) {
if (strstr(buff, "forced frame type") != nullptr) {
return;
}
pthread_mutex_lock(&log_motapp->mutex_parms);
log_type = log_get_type(new_logtype);
pthread_mutex_unlock(&log_motapp->mutex_parms);
/*
AV_LOG_QUIET -8 1
AV_LOG_PANIC 0 2
AV_LOG_FATAL 8 3
AV_LOG_ERROR 16 4
AV_LOG_WARNING 24 5
AV_LOG_INFO 32 6
AV_LOG_VERBOSE 40 7
AV_LOG_DEBUG 48 8
AV_LOG_TRACE 56 9
*/
}
fflvl = ((motlog->log_fflevel -2) * 8);
void log_set_level(int new_loglevel)
{
if (new_loglevel == log_level) {
return;
}
pthread_mutex_lock(&log_motapp->mutex_parms);
log_level = new_loglevel;
pthread_mutex_unlock(&log_motapp->mutex_parms);
}
/** Sets mode of logging, could be using syslog or files. */
static void log_set_mode(int mode)
{
int prev_mode = log_mode;
log_mode = mode;
if (mode == LOGMODE_SYSLOG && prev_mode != LOGMODE_SYSLOG) {
openlog("motionplus", LOG_PID, LOG_USER);
}
if (mode != LOGMODE_SYSLOG && prev_mode == LOGMODE_SYSLOG) {
closelog();
if (errnbr < fflvl) {
MOTPLS_LOG(INF, TYPE_ALL, NO_ERRNO,"%s",buff );
}
}
/** Sets logfile to be used instead of syslog. */
static void log_set_logfile(const char *logfile_name)
void cls_log::write_flood(int loglvl)
{
/* Setup temporary to let log if myfopen fails */
log_set_mode(LOGMODE_SYSLOG);
logfile = myfopen(logfile_name, "ae");
/* If logfile was opened correctly */
if (logfile) {
log_set_mode(LOGMODE_FILE);
}
return;
}
/** Return string with human readable time */
static char *str_time(void)
{
static char buffer[16];
time_t now = 0;
now = time(0);
strftime(buffer, 16, "%b %d %H:%M:%S", localtime(&now));
return buffer;
}
/**
* This routine is used for printing all informational, debug or error
* messages produced by any of the other motionplus functions.
*/
void motpls_log(int msg_level, int msg_type, int msg_err, int msg_fnc, const char *msg_fncnm, ...)
{
int errno_save, n, prefixlen, timelen;
char buf[1024]= {0};
char usrfmt[1024]= {0};
char msg_buf[100]= {0};
va_list ap;
unsigned long threadnr;
static int flood_cnt = 0;
static char flood_msg[1024];
static char prefix_msg[512];
char flood_repeats[1024];
char threadname[32];
int applvl, apptyp;
pthread_mutex_lock(&log_motapp->mutex_parms);
applvl = log_level;
apptyp = log_type;
pthread_mutex_unlock(&log_motapp->mutex_parms);
/*Exit if not our level or type */
if (msg_level > applvl) {
return;
}
if ((apptyp != TYPE_ALL) && (apptyp != msg_type)) {
if (flood_cnt <= 1) {
return;
}
threadnr = (unsigned long)pthread_getspecific(tls_key_threadnr);
snprintf(buf, sizeof(buf), "%s","");
n = 0;
errno_save = errno;
mythreadname_get(threadname);
snprintf(flood_repeats, sizeof(flood_repeats)
, "%s Above message repeats %d times\n"
, msg_prefix, flood_cnt-1);
if (log_mode == LOGMODE_FILE) {
n = snprintf(buf, sizeof(buf), "%s [%s][%s][%02ld:%s] "
, str_time(), log_level_str[msg_level], log_type_str[msg_type]
, threadnr, threadname );
timelen = 16;
fputs(flood_repeats, log_file_ptr);
fflush(log_file_ptr);
} else { /* The syslog level values are one less*/
syslog(loglvl-1, "%s", flood_repeats);
fputs(flood_repeats, stderr);
fflush(stderr);
}
}
void cls_log::write_norm(int loglvl, int prefixlen)
{
flood_cnt = 1;
snprintf(msg_flood, sizeof(msg_flood)
, "%s", &msg_full[prefixlen]);
snprintf(msg_prefix, prefixlen, "%s", msg_full);
if (log_mode == LOGMODE_FILE) {
strcpy(msg_full + strlen(msg_full),"\n");
fputs(msg_full, log_file_ptr);
fflush(log_file_ptr);
} else {
n = snprintf(buf, sizeof(buf), "[%s][%s][%02ld:%s] "
, log_level_str[msg_level], log_type_str[msg_type]
, threadnr, threadname );
timelen = 0;
syslog(loglvl-1, "%s", msg_full);
strcpy(msg_full + strlen(msg_full),"\n");
fputs(msg_full, stderr);
fflush(stderr);
}
}
void cls_log::add_errmsg(int flgerr, int err_save)
{
size_t errsz, msgsz;
char err_buf[90];
if (flgerr == NO_ERRNO) {
return;
}
memset(err_buf, 0, sizeof(err_buf));
strerror_r(err_save, err_buf, sizeof(err_buf));
errsz = strlen(err_buf);
msgsz = strlen(msg_full);
if ((msgsz+errsz+2) >= sizeof(msg_full)) {
msgsz = msgsz-errsz-2;
memset(msg_full+msgsz, 0, sizeof(msg_full) - msgsz);
}
strcpy(msg_full+msgsz,": ");
memcpy(msg_full+msgsz + 2, err_buf, errsz);
}
void cls_log::set_mode(int mode_new)
{
if ((log_mode != LOGMODE_SYSLOG) && (mode_new == LOGMODE_SYSLOG)) {
openlog("restream", LOG_PID, LOG_USER);
}
if ((log_mode == LOGMODE_SYSLOG) && (mode_new != LOGMODE_SYSLOG)) {
closelog();
}
log_mode = mode_new;
}
void cls_log::set_log_file(std::string pname)
{
if ((pname == "") || (pname == "syslog")) {
if (log_file_ptr != nullptr) {
myfclose(log_file_ptr);
log_file_ptr = nullptr;
}
if (log_file_name == "") {
set_mode(LOGMODE_SYSLOG);
log_file_name == "syslog";
MOTPLS_LOG(NTC, TYPE_ALL, NO_ERRNO, "Logging to syslog");
}
} else if ((pname != log_file_name) || (log_file_ptr == nullptr)) {
if (log_file_ptr != nullptr) {
myfclose(log_file_ptr);
log_file_ptr = nullptr;
}
log_file_ptr = myfopen(pname.c_str(), "ae");
if (log_file_ptr != nullptr) {
log_file_name = pname;
set_mode(LOGMODE_SYSLOG);
MOTPLS_LOG(NTC, TYPE_ALL, NO_ERRNO, "Logging to file (%s)"
,pname.c_str());
set_mode(LOGMODE_FILE);
} else {
log_file_name = "syslog";
set_mode(LOGMODE_SYSLOG);
MOTPLS_LOG(EMG, TYPE_ALL, SHOW_ERRNO, "Cannot create log file %s"
, pname.c_str());
}
}
}
void cls_log::write_msg(int loglvl, int msg_type, int flgerr, bool flgfnc, ...)
{
int err_save, n, prefixlen;
std::string usrfmt;
char msg_time[32];
char threadname[32];
va_list ap;
time_t now;
if (loglvl > log_level) {
return;
}
pthread_mutex_lock(&mtx);
err_save = errno;
memset(msg_full, 0, sizeof(msg_full));
mythreadname_get(threadname);
now = time(NULL);
strftime(msg_time, sizeof(msg_time)
, "%b %d %H:%M:%S", localtime(&now));
if (log_mode == LOGMODE_FILE) {
n = snprintf(msg_full, sizeof(msg_full)
, "%s [%s][%s][%s] ", msg_time
, log_level_str[loglvl],log_type_str[msg_type], threadname );
} else {
n = snprintf(msg_full, sizeof(msg_full)
, "[%s][%s][%s] "
, log_level_str[loglvl],log_type_str[msg_type], threadname );
}
prefixlen = n;
/* Prepend the format specifier for the function name */
va_start(ap, msg_fncnm);
if (msg_fnc) {
prefixlen += (int)strlen(msg_fncnm)+2;
snprintf(usrfmt, sizeof (usrfmt),"%s:%s", msg_fncnm, va_arg(ap, char *));
} else {
snprintf(usrfmt, sizeof (usrfmt),"%s", va_arg(ap, char *));
}
n += vsnprintf(buf + n, sizeof(buf) - n, usrfmt, ap);
va_start(ap, flgfnc);
usrfmt = va_arg(ap, char *);
if (flgfnc) {
usrfmt.append(": ").append(va_arg(ap, char *));
}
n += vsnprintf(msg_full + n, sizeof(msg_full)-n-1, usrfmt.c_str(), ap);
va_end(ap);
buf[1023] = '\0';
/* If msg_err is set, add on the library error message. */
if (msg_err) {
size_t buf_len = strlen(buf);
// just knock off 10 characters if we're that close...
if (buf_len + 10 > 1024) {
buf[1024 - 10] = '\0';
buf_len = 1024 - 10;
}
strncat(buf, ": ", 1024 - buf_len);
n += 2;
#if defined(XSI_STRERROR_R)
/* XSI-compliant strerror_r() */
strerror_r(errno_save, buf + n, sizeof(buf) - n); /* 2 for the ': ' */
(void)msg_buf;
#else
/* GNU-specific strerror_r() */
strncat(buf, strerror_r(errno_save, msg_buf, sizeof(msg_buf)), 1024 - strlen(buf));
#endif
}
add_errmsg(flgerr, err_save);
if ((mystreq(&buf[timelen], flood_msg)) && (flood_cnt <= 5000)) {
if ((flood_cnt <= 5000) &&
mystreq(msg_flood, &msg_full[prefixlen])) {
flood_cnt++;
} else {
if (flood_cnt > 1) {
snprintf(flood_repeats, 1024
, "%s Above message repeats %d times"
, prefix_msg, flood_cnt-1);
switch (log_mode) {
case LOGMODE_FILE:
strncat(flood_repeats, "\n", 1024 - strlen(flood_repeats));
fputs(flood_repeats, logfile);
fflush(logfile);
break;
case LOGMODE_SYSLOG:
/* The syslog level values are one less than the motionplus numeric values*/
syslog(msg_level-1, "%s", flood_repeats);
strncat(flood_repeats, "\n", 1024 - strlen(flood_repeats));
fputs(flood_repeats, stderr);
fflush(stderr);
break;
}
}
flood_cnt = 1;
snprintf(flood_msg, 1024, "%s", &buf[timelen]);
snprintf(prefix_msg, prefixlen, "%s", buf);
switch (log_mode) {
case LOGMODE_FILE:
strncat(buf, "\n", 1024 - strlen(buf));
fputs(buf, logfile);
fflush(logfile);
break;
case LOGMODE_SYSLOG:
/* The syslog level values are one less than the motionplus numeric values*/
syslog(msg_level-1, "%s", buf);
strncat(buf, "\n", 1024 - strlen(buf));
fputs(buf, stderr);
fflush(stderr);
break;
}
pthread_mutex_unlock(&mtx);
return;
}
write_flood(loglvl);
write_norm(loglvl, prefixlen);
pthread_mutex_unlock(&mtx);
}
void log_init(ctx_motapp *motapp)
void cls_log::log_stop()
{
if ((motapp->conf->log_level > ALL) ||
(motapp->conf->log_level == 0)) {
motapp->conf->log_level = LEVEL_DEFAULT;
MOTPLS_LOG(NTC, TYPE_ALL, NO_ERRNO
,_("Using default log level (%s) (%d)")
,log_level_str[motapp->conf->log_level]
,motapp->conf->log_level);
if (log_file_ptr != nullptr) {
MOTPLS_LOG(NTC, TYPE_ALL, NO_ERRNO, "Closing log_file (%s)."
, log_file_name.c_str());
myfclose(log_file_ptr);
log_file_ptr = nullptr;
}
if (motapp->conf->log_file != "") {
if (motapp->conf->log_file != "syslog") {
log_set_mode(LOGMODE_FILE);
log_set_logfile(motapp->conf->log_file.c_str());
if (logfile) {
log_set_mode(LOGMODE_SYSLOG);
MOTPLS_LOG(NTC, TYPE_ALL, NO_ERRNO
, _("Logging to file (%s)")
, motapp->conf->log_file.c_str());
log_set_mode(LOGMODE_FILE);
} else {
MOTPLS_LOG(EMG, TYPE_ALL, SHOW_ERRNO
, _("Exit MotionPlus, cannot create log file %s")
, motapp->conf->log_file.c_str());
exit(0);
}
} else {
MOTPLS_LOG(NTC, TYPE_ALL, NO_ERRNO, _("Logging to syslog"));
}
} else {
MOTPLS_LOG(NTC, TYPE_ALL, NO_ERRNO, _("Logging to syslog"));
}
MOTPLS_LOG(NTC, TYPE_ALL, NO_ERRNO, "MotionPlus %s started",VERSION);
motapp->conf->log_type = log_get_type(motapp->conf->log_type_str.c_str());
MOTPLS_LOG(NTC, TYPE_ALL, NO_ERRNO
, _("Using log type (%s) log level (%s)")
, log_type_str[motapp->conf->log_type]
, log_level_str[motapp->conf->log_level]);
log_set_level(motapp->conf->log_level);
log_type = motapp->conf->log_type;
}
void log_deinit(ctx_motapp *motapp)
cls_log::cls_log(ctx_motapp *p_motapp)
{
c_motapp = p_motapp;
log_mode = LOGMODE_NONE;
log_level = LEVEL_DEFAULT;
log_file_ptr = nullptr;
log_file_name = "";
flood_cnt = 0;
set_mode(LOGMODE_SYSLOG);
pthread_mutex_init(&mtx, NULL);
memset(msg_prefix,0,sizeof(msg_prefix));
memset(msg_flood,0,sizeof(msg_flood));
memset(msg_full,0,sizeof(msg_full));
if (logfile != NULL) {
MOTPLS_LOG(NTC, TYPE_ALL, NO_ERRNO
, _("Closing logfile (%s).")
, motapp->conf->log_file.c_str());
myfclose(logfile);
log_set_mode(LOGMODE_NONE);
logfile = NULL;
}
av_log_set_callback(ff_log);
}
/* Set the static motapp pointer in logger module */
void log_init_app(ctx_motapp *motapp)
cls_log::~cls_log()
{
/* Need better design to avoid the need to do this. Extern motapp to whole app? */
log_motapp = motapp; /* Set our static pointer used for locking parms mutex*/
log_stop();
pthread_mutex_destroy(&mtx);
}
}

View File

@@ -17,8 +17,8 @@
*/
#ifndef _INCLUDE_LOGGER_HPP_
#define _INCLUDE_LOGGER_HPP_
extern cls_log *motlog;
/* Logging mode */
#define LOGMODE_NONE 0 /* No logging */
#define LOGMODE_FILE 1 /* Log messages to file */
#define LOGMODE_SYSLOG 2 /* Log messages to syslog */
@@ -26,7 +26,6 @@
#define NO_ERRNO 0 /* Flag to avoid how message associated to errno */
#define SHOW_ERRNO 1 /* Flag to show message associated to errno */
/* Log levels */
#define LOG_ALL 9
#define EMG 1
#define ALR 2
@@ -52,14 +51,34 @@
#define TYPE_DEFAULT TYPE_ALL /* Default type */
#define TYPE_DEFAULT_STR "ALL" /* Default name logs */
#define MOTPLS_LOG(x, y, z, ...) motpls_log(x, y, z, 1, __FUNCTION__, __VA_ARGS__)
#define MOTPLS_LOG(x, y, z, ...) motlog->write_msg(x, y, z, true, __FUNCTION__, __VA_ARGS__)
#define MOTPLS_SHT(x, y, z, ...) motlog->write_msg(x, y, z, false, __VA_ARGS__)
void motpls_log(int msg_level, int msg_type, int msg_err, int msg_fnc, const char *msg_fncnm, ...);
class cls_log {
public:
cls_log(ctx_motapp *p_motapp);
~cls_log();
int log_level;
int log_fflevel;
void set_log_file(std::string pname);
void write_msg(int loglvl, int msg_type, int flgerr, bool flgfnc, ...);
private:
ctx_motapp *c_motapp;
pthread_mutex_t mtx;
int log_mode;
FILE *log_file_ptr;
std::string log_file_name;
char msg_prefix[512];
char msg_flood[1024];
char msg_full[1024];
int flood_cnt;
void set_mode(int mode);
void write_flood(int loglvl);
void write_norm(int loglvl, int prefixlen);
void add_errmsg(int flgerr, int err_save);
void log_stop();
};
void log_init(ctx_motapp *motapp);
void log_deinit(ctx_motapp *motapp);
void log_set_level(int new_level);
void log_set_type(const char *new_logtype);
void log_init_app(ctx_motapp *motapp);
#endif /* _INCLUDE_LOGGER_HPP_ */

View File

@@ -1367,11 +1367,6 @@ static void mlp_parmsupdate(ctx_dev *cam)
cam->parms_changed = false;
}
if (cam->motapp->parms_changed) {
log_set_level(cam->motapp->conf->log_level);
log_set_type(cam->motapp->conf->log_type_str.c_str());
cam->motapp->parms_changed = false;
}
}
/* sleep the loop to get framerate requested */

View File

@@ -316,15 +316,7 @@ void motpls_av_init(void)
void motpls_av_deinit(void)
{
avformat_network_deinit();
}
/* Free the all_img items*/
static void motpls_allcams_deinit(ctx_motapp *motapp)
{
delete motapp->all_sizes;
}
/* Validate or set the position on the all cameras image*/
@@ -499,8 +491,6 @@ static void motpls_shutdown(ctx_motapp *motapp)
{
motpls_pid_remove(motapp);
log_deinit(motapp);
delete motapp->webu;
dbse_deinit(motapp);
@@ -510,7 +500,10 @@ static void motpls_shutdown(ctx_motapp *motapp)
delete motapp->conf;
motapp->conf = nullptr;;
motpls_allcams_deinit(motapp);
delete motlog;
motlog = nullptr;
delete motapp->all_sizes;
}
@@ -639,13 +632,15 @@ static void motpls_ntc(void)
/** Initialize upon start up or restart */
static void motpls_startup(ctx_motapp *motapp, int daemonize)
{
log_init_app(motapp); /* This is needed prior to any function possibly calling motion_log*/
motapp->conf = new ctx_config;
motlog = new cls_log(motapp);
conf_init(motapp);
log_init(motapp);
motlog->log_level = motapp->conf->log_level;
motlog->log_fflevel = 3;
motlog->set_log_file(motapp->conf->log_file);
mytranslate_init();

View File

@@ -25,6 +25,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <syslog.h>
#ifndef __USE_GNU
#define __USE_GNU
#endif
@@ -111,7 +112,6 @@
}
#endif
/* Forward declarations, used in functional definitions of headers */
struct ctx_motapp;
struct ctx_images;
@@ -120,6 +120,7 @@ struct ctx_dbse;
struct ctx_algsec;
struct ctx_config;
class cls_log;
class cls_movie;
class cls_netcam;
class cls_picture;