fork of Sam Grove's library
Fork of LogUtil by
LogUtil.h@1:491d2a7f4207, 2013-03-29 (annotated)
- 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?
User | Revision | Line number | New 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 |