Helpful logging and error format

Dependents:   Waldo_Embed_V2

Inspired by this blog post.

Work in Progress

Committer:
sam_grove
Date:
Fri Mar 29 17:36:50 2013 +0000
Revision:
0:3054bbdace4c
Child:
1:491d2a7f4207
Starting point for unified logging. Will be updated to redirect so it can be used during run time or in the field.

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 0:3054bbdace4c 6 * @see http://www.drdobbs.com/cpp/a-lightweight-logger-for-c/240147505?pgno=2
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 0:3054bbdace4c 35 fprintf(STREAM, ##__VA_ARGS__)
sam_grove 0:3054bbdace4c 36
sam_grove 0:3054bbdace4c 37 /** Using the LogUtil class
sam_grove 0:3054bbdace4c 38 *
sam_grove 0:3054bbdace4c 39 * Example:
sam_grove 0:3054bbdace4c 40 * @code
sam_grove 0:3054bbdace4c 41 * #include "mbed.h"
sam_grove 0:3054bbdace4c 42 * #include "LogUtil.h"
sam_grove 0:3054bbdace4c 43 *
sam_grove 0:3054bbdace4c 44 * LogUtil log;
sam_grove 0:3054bbdace4c 45 *
sam_grove 0:3054bbdace4c 46 * int main()
sam_grove 0:3054bbdace4c 47 * {
sam_grove 0:3054bbdace4c 48 * LOG("This is a log\n");
sam_grove 0:3054bbdace4c 49 * WARN("This is a warning\n");
sam_grove 0:3054bbdace4c 50 * ERROR("This is an error\n");
sam_grove 0:3054bbdace4c 51 *
sam_grove 0:3054bbdace4c 52 * for(int i=0; i<10; ++i) {
sam_grove 0:3054bbdace4c 53 * LOG("Log message #%d\n", i);
sam_grove 0:3054bbdace4c 54 * }
sam_grove 0:3054bbdace4c 55 *
sam_grove 0:3054bbdace4c 56 * for(int i=0; i<10; ++i) {
sam_grove 0:3054bbdace4c 57 * WARN("Warn message #%d\n", i);
sam_grove 0:3054bbdace4c 58 * }
sam_grove 0:3054bbdace4c 59 *
sam_grove 0:3054bbdace4c 60 * for(int i=0; i<10; ++i) {
sam_grove 0:3054bbdace4c 61 * ERROR("Error message #%d\n", i);
sam_grove 0:3054bbdace4c 62 * }
sam_grove 0:3054bbdace4c 63 * }
sam_grove 0:3054bbdace4c 64 * @endcode
sam_grove 0:3054bbdace4c 65 */
sam_grove 0:3054bbdace4c 66
sam_grove 0:3054bbdace4c 67 /**
sam_grove 0:3054bbdace4c 68 * @class LogUtil
sam_grove 0:3054bbdace4c 69 * @brief Different ways to log messages having a standard interface
sam_grove 0:3054bbdace4c 70 */
sam_grove 0:3054bbdace4c 71 class LogUtil
sam_grove 0:3054bbdace4c 72 {
sam_grove 0:3054bbdace4c 73 public:
sam_grove 0:3054bbdace4c 74
sam_grove 0:3054bbdace4c 75 /** Construct the LogUtil class and configure
sam_grove 0:3054bbdace4c 76 */
sam_grove 0:3054bbdace4c 77 LogUtil();
sam_grove 0:3054bbdace4c 78
sam_grove 0:3054bbdace4c 79 };
sam_grove 0:3054bbdace4c 80
sam_grove 0:3054bbdace4c 81
sam_grove 0:3054bbdace4c 82 #endif
sam_grove 0:3054bbdace4c 83
sam_grove 0:3054bbdace4c 84