Helpful logging and error format

Dependents:   Waldo_Embed_V2

Inspired by this blog post.

Work in Progress

Committer:
sam_grove
Date:
Fri Mar 29 20:02:18 2013 +0000
Revision:
1:491d2a7f4207
Parent:
0:3054bbdace4c
Child:
2:c54746c59ba4
Updated documentation and added exit to error

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sam_grove 0:3054bbdace4c 1 /**
sam_grove 0:3054bbdace4c 2 * @file LogUtil.h
sam_grove 0:3054bbdace4c 3 * @brief Utility to log messages during runtime
sam_grove 0:3054bbdace4c 4 * @author sam grove
sam_grove 0:3054bbdace4c 5 * @version 1.0
sam_grove 1:491d2a7f4207 6 * @see http://www.drdobbs.com/cpp/a-lightweight-logger-for-c/240147505
sam_grove 0:3054bbdace4c 7 *
sam_grove 0:3054bbdace4c 8 * Copyright (c) 2013
sam_grove 0:3054bbdace4c 9 *
sam_grove 0:3054bbdace4c 10 * Licensed under the Apache License, Version 2.0 (the "License");
sam_grove 0:3054bbdace4c 11 * you may not use this file except in compliance with the License.
sam_grove 0:3054bbdace4c 12 * You may obtain a copy of the License at
sam_grove 0:3054bbdace4c 13 *
sam_grove 0:3054bbdace4c 14 * http://www.apache.org/licenses/LICENSE-2.0
sam_grove 0:3054bbdace4c 15 *
sam_grove 0:3054bbdace4c 16 * Unless required by applicable law or agreed to in writing, software
sam_grove 0:3054bbdace4c 17 * distributed under the License is distributed on an "AS IS" BASIS,
sam_grove 0:3054bbdace4c 18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
sam_grove 0:3054bbdace4c 19 * See the License for the specific language governing permissions and
sam_grove 0:3054bbdace4c 20 * limitations under the License.
sam_grove 0:3054bbdace4c 21 */
sam_grove 0:3054bbdace4c 22
sam_grove 0:3054bbdace4c 23 #ifndef LOGUTIL_H
sam_grove 0:3054bbdace4c 24 #define LOGUTIL_H
sam_grove 0:3054bbdace4c 25
sam_grove 0:3054bbdace4c 26 #define STREAM stdout
sam_grove 0:3054bbdace4c 27 #define LOG(...) \
sam_grove 0:3054bbdace4c 28 fprintf(STREAM, "LOG: %s L#%d ", __PRETTY_FUNCTION__, __LINE__); \
sam_grove 0:3054bbdace4c 29 fprintf(STREAM, ##__VA_ARGS__)
sam_grove 0:3054bbdace4c 30 #define WARN(...) \
sam_grove 0:3054bbdace4c 31 fprintf(STREAM, "WARN: %s L#%d ", __PRETTY_FUNCTION__, __LINE__); \
sam_grove 0:3054bbdace4c 32 fprintf(STREAM, ##__VA_ARGS__)
sam_grove 0:3054bbdace4c 33 #define ERROR(...) \
sam_grove 0:3054bbdace4c 34 fprintf(STREAM, "ERROR: %s L#%d ", __PRETTY_FUNCTION__, __LINE__); \
sam_grove 1:491d2a7f4207 35 fprintf(STREAM, ##__VA_ARGS__); \
sam_grove 1:491d2a7f4207 36 fflush(STREAM); \
sam_grove 1:491d2a7f4207 37 exit(1)
sam_grove 0:3054bbdace4c 38
sam_grove 0:3054bbdace4c 39 /** Using the LogUtil class
sam_grove 0:3054bbdace4c 40 *
sam_grove 0:3054bbdace4c 41 * Example:
sam_grove 0:3054bbdace4c 42 * @code
sam_grove 0:3054bbdace4c 43 * #include "mbed.h"
sam_grove 0:3054bbdace4c 44 * #include "LogUtil.h"
sam_grove 0:3054bbdace4c 45 *
sam_grove 1:491d2a7f4207 46 * LogUtil logger;
sam_grove 0:3054bbdace4c 47 *
sam_grove 0:3054bbdace4c 48 * int main()
sam_grove 0:3054bbdace4c 49 * {
sam_grove 0:3054bbdace4c 50 * LOG("This is a log\n");
sam_grove 0:3054bbdace4c 51 * WARN("This is a warning\n");
sam_grove 0:3054bbdace4c 52 *
sam_grove 1:491d2a7f4207 53 * for(int i=0; i<3; ++i) {
sam_grove 0:3054bbdace4c 54 * LOG("Log message #%d\n", i);
sam_grove 0:3054bbdace4c 55 * }
sam_grove 0:3054bbdace4c 56 *
sam_grove 1:491d2a7f4207 57 * for(int i=0; i<3; ++i) {
sam_grove 0:3054bbdace4c 58 * WARN("Warn message #%d\n", i);
sam_grove 0:3054bbdace4c 59 * }
sam_grove 0:3054bbdace4c 60 *
sam_grove 1:491d2a7f4207 61 * ERROR("This is an error\n");
sam_grove 0:3054bbdace4c 62 * }
sam_grove 0:3054bbdace4c 63 * @endcode
sam_grove 0:3054bbdace4c 64 */
sam_grove 0:3054bbdace4c 65
sam_grove 0:3054bbdace4c 66 /**
sam_grove 0:3054bbdace4c 67 * @class LogUtil
sam_grove 0:3054bbdace4c 68 * @brief Different ways to log messages having a standard interface
sam_grove 0:3054bbdace4c 69 */
sam_grove 0:3054bbdace4c 70 class LogUtil
sam_grove 0:3054bbdace4c 71 {
sam_grove 0:3054bbdace4c 72 public:
sam_grove 0:3054bbdace4c 73
sam_grove 0:3054bbdace4c 74 /** Construct the LogUtil class and configure
sam_grove 0:3054bbdace4c 75 */
sam_grove 0:3054bbdace4c 76 LogUtil();
sam_grove 0:3054bbdace4c 77
sam_grove 0:3054bbdace4c 78 };
sam_grove 0:3054bbdace4c 79
sam_grove 0:3054bbdace4c 80
sam_grove 0:3054bbdace4c 81 #endif
sam_grove 0:3054bbdace4c 82
sam_grove 0:3054bbdace4c 83