log.c 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. /*
  2. * Copyright (C) 2009-2010 Felipe Contreras
  3. *
  4. * Author: Felipe Contreras <felipe.contreras@gmail.com>
  5. *
  6. * This file may be used under the terms of the GNU Lesser General Public
  7. * License version 2.1, a copy of which is found in LICENSE included in the
  8. * packaging of this file.
  9. */
  10. #include "log.h"
  11. #include <stdio.h>
  12. #include <stdarg.h>
  13. #include <stdlib.h>
  14. #include <gst/gst.h>
  15. #define SYSLOG
  16. #ifdef SYSLOG
  17. #include <syslog.h>
  18. #endif
  19. #ifndef GST_DISABLE_GST_DEBUG
  20. #include "plugin.h"
  21. #endif
  22. #ifdef SYSLOG
  23. static inline int
  24. log_level_to_syslog(unsigned int level)
  25. {
  26. switch (level) {
  27. case 0: return LOG_ERR;
  28. case 1: return LOG_WARNING;
  29. case 2:
  30. case 3: return LOG_INFO;
  31. default: return LOG_DEBUG;
  32. }
  33. }
  34. #endif
  35. #ifndef GST_DISABLE_GST_DEBUG
  36. static inline GstDebugLevel
  37. log_level_to_gst(unsigned int level)
  38. {
  39. switch (level) {
  40. case 0: return GST_LEVEL_ERROR;
  41. case 1: return GST_LEVEL_WARNING;
  42. case 2:
  43. case 3: return GST_LEVEL_INFO;
  44. default: return GST_LEVEL_DEBUG;
  45. }
  46. }
  47. #endif
  48. void pr_helper(unsigned int level,
  49. void *object,
  50. const char *file,
  51. const char *function,
  52. unsigned int line,
  53. const char *fmt,
  54. ...)
  55. {
  56. char *tmp;
  57. va_list args;
  58. va_start(args, fmt);
  59. if (vasprintf(&tmp, fmt, args) < 0)
  60. goto leave;
  61. if (level <= 1) {
  62. #ifdef SYSLOG
  63. if (object && GST_IS_OBJECT(object) && GST_OBJECT_NAME(object))
  64. syslog(log_level_to_syslog(level), "%s: %s", GST_OBJECT_NAME(object), tmp);
  65. else
  66. syslog(log_level_to_syslog(level), "%s", tmp);
  67. #endif
  68. if (level == 0)
  69. g_printerr("%s: %s\n", function, tmp);
  70. else
  71. g_print("%s: %s\n", function, tmp);
  72. }
  73. else if (level == 2)
  74. g_print("%s:%s(%u): %s\n", file, function, line, tmp);
  75. #if defined(DEVEL) || defined(DEBUG)
  76. else if (level == 3)
  77. g_print("%s: %s\n", function, tmp);
  78. #endif
  79. #ifdef DEBUG
  80. else if (level == 4)
  81. g_print("%s:%s(%u): %s\n", file, function, line, tmp);
  82. #endif
  83. #ifndef GST_DISABLE_GST_DEBUG
  84. gst_debug_log_valist(gstdsp_debug, log_level_to_gst(level), file, function, line, object, fmt, args);
  85. #endif
  86. free(tmp);
  87. leave:
  88. va_end(args);
  89. }