print to console or file
/*----------------------------------------------------------------------*/
/*              Debug for embeded board, 2008-2-26, Rain.               */
/*----------------------------------------------------------------------*/
#define  PRINT_DEBUG    1
#define  UNDERLINE              "\033[4m"
#define  BLACK                  "\033[30m"
#define  RED                    "\033[31m"
#define  GREEN                  "\033[32m"
#define  YELLOW                 "\033[33m"
#define  BLUE                   "\033[34m"
#define  PURPLE                 "\033[35m"
#define  DARKGREEN              "\033[36m"
#define  WHITE                  "\033[37m"
#define  BG_BLACK               "\033[40m"
#define  BG_RED                 "\033[41m"
#define  BG_GREEN               "\033[42m"
#define  BG_YELLOW              "\033[43m"
#define  BG_BLUE                "\033[44m"
#define  BG_PURPLE              "\033[45m"
#define  BG_DARKGREEN           "\033[46m"
#define  BG_WHITE               "\033[47m"
#define  CLOSE                  "\033[0m"
#define cprintf(fmt, args...) do            \
{                                               \
    FILE *fp1 = fopen("/dev/tty", "a"); \
    FILE *fp2 = fopen("/tmp/dbg.txt", "a"); \
    int  flag = 0;                          \
    if (fp1 && (flag == 0 || flag == 2)) {  \
        fprintf(fp1, fmt, ## args);     \
        fclose(fp1);                    \
    }                                       \
    if (fp2 && (flag == 1 || flag == 2)) {  \
        fprintf(fp2, fmt, ## args);     \
        fclose(fp2);                    \
    } \
} while (0)
#ifdef  PRINT_DEBUG
#define dbg(fmt, args...)    \
    cprintf("==> CGI_DEBUG %s | %s %d | " fmt CLOSE, __FILE__, __FUNCTION__, __LINE__, ##args)
#else
#define dbg(fmt, args...)
#endif
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
/*              Debug for SSH terminal, 2008-2-26, Rain.                */
/*----------------------------------------------------------------------*/
#define  PRINT_DEBUG    1
#define  UNDERLINE              "\033[4m"
#define  BLACK                  "\033[30m"
#define  RED                    "\033[31m"
#define  GREEN                  "\033[32m"
#define  YELLOW                 "\033[33m"
#define  BLUE                   "\033[34m"
#define  PURPLE                 "\033[35m"
#define  DARKGREEN              "\033[36m"
#define  WHITE                  "\033[37m"
#define  BG_BLACK               "\033[40m"
#define  BG_RED                 "\033[41m"
#define  BG_GREEN               "\033[42m"
#define  BG_YELLOW              "\033[43m"
#define  BG_BLUE                "\033[44m"
#define  BG_PURPLE              "\033[45m"
#define  BG_DARKGREEN           "\033[46m"
#define  BG_WHITE               "\033[47m"
#define  CLOSE                  "\033[0m"
#define cprintf(fmt, args...) do            \
{                                               \
    char *dev = getenv("SSH_TTY");          \
    FILE *fp1 = fopen(dev, "a");            \
    FILE *fp2 = fopen("/tmp/dbg.txt", "a"); \
    int  flag = 0;                          \
    if (fp1 && (flag == 0 || flag == 2)) {  \
        fprintf(fp1, fmt, ## args);     \
        fclose(fp1);                    \
    }                                       \
    if (fp2 && (flag == 1 || flag == 2)) {  \
        fprintf(fp2, fmt, ## args);     \
        fclose(fp2);                    \
    } \
} while (0)
#ifdef  PRINT_DEBUG
#define dbg(fmt, args...)    \
    cprintf("==> CGI_DEBUG %s | %s %d | " fmt CLOSE, __FILE__, __FUNCTION__, __LINE__, ##args)
#else
#define dbg(fmt, args...)
#endif
/*----------------------------------------------------------------------*/
print to console or file的更多相关文章
- Log4J是Apache组织的开源一个开源项目,通过Log4J,可以指定日志信息输出的目的地,如console、file等。Log4J采用日志级别机制,请按照输出级别由低到高的顺序写出日志输出级别。
		Log4J是Apache组织的开源一个开源项目,通过Log4J,可以指定日志信息输出的目的地,如console.file等.Log4J采用日志级别机制,请按照输出级别由低到高的顺序写出日志输出级别. ... 
- Python3 print()函数sep,end,file参数用法练习
		来自builtins.py:def print(self, *args, sep=' ', end='\n', file=None): # known special case of print &q ... 
- Perl Print Win32 Console Windows 控制台 print Unicode 问题
		参考资料: https://stackoverflow.com/questions/15224400/perl-on-windows-problems-with-encoding https://te ... 
- SVNKit学习——基于Repository的操作之print repository tree、file content、repository history(四)
		此篇文章同样是参考SVNKit在wiki的官方文档做的demo,每个类都可以单独运行.具体的细节都写到注释里了~ 开发背景: SVNKit版本:1.7.14 附上官网下载链接:https://www. ... 
- (转)Python标准库:内置函数print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
		原文:https://blog.csdn.net/caimouse/article/details/44133241 https://www.cnblogs.com/owasp/p/5372476.h ... 
- Disabling default console handler in Java Logger by codes
		The open source packages usu. relies on log4j or Java Logger to print logs, by default the console h ... 
- python print及格式化
		print(value,sep=' ',end='\n',file=sys.stdout, flush=False) sep=' '默认空格 print('hello','world') #hello ... 
- html之file标签 --- 图片上传前预览 -- FileReader
		记得以前做网站时,曾经需要实现一个图片上传到服务器前,先预览的功能.当时用html的<input type="file"/>标签一直实现不了,最后舍弃了这个标签,使用了 ... 
- 操作文件方法简单总结(File,Directory,StreamReader,StreamWrite )
		对于文件夹,文档的操作一直处于一知半解状态,有时间闲下来了,好好练习了一把,对文档,文件的操作有了一个基本的认知, 若要深入了解,还是得通过实际的项目才行了,好了废话不多说,上酸菜!! 注:红色标题为 ... 
随机推荐
- C#汉字转拼音,可识别多音字,带声调,提供正向、逆向、双向分词算法的小程序
			用C#写了个汉字转拼音的小工具,和网上大部分工具不同,这个通过分词算法,解决了多音字的问题,并且提供声调,可开可关. 如题,用"银行 行不行 行家说了算"举例,如果转拼音却不能识别 ... 
- Android -- ImageLoader本地缓存
			传送门 <Android -- ImageLoader简析> http://www.cnblogs.com/yydcdut/p/4008097.html 本地缓存 在缓存文件时对文件名称 ... 
- 【Storm】学习笔记
			Storm 1 基本概念 1.1 分布式.可扩展.高容错.实时流处理.跨语言 1.2 应用场景 1.2.1 实时分析 1.2.2 在线机器学习 1.2.3 分布式RPC 1.2.4 ETL数据抽取 1 ... 
- Eclipse 创建文件快捷菜单、避免格式化时自动换行、.properties文件中文乱码、在线安装FreeMarker
			创建文件快捷菜单设置 打开窗口“Customize Perspective - Java EE”,切换选项卡到“Shortcuts”: 进行一下配置: “Generate”:如上图勾选方式 " ... 
- effective C++中条款37:绝不又一次定义继承而来的缺省參数值
			virtual 函数会动态绑定,而virtual函数的缺省參数值是静态绑定的. 用一个base类型的指针p去指向一个derived类对象.通过p调用虚函数时,会动态绑定到实际所指对象中的函数:用一个d ... 
- Sql server management studio: cannot find one or more components
			Install VS2010 SHELL 独立组件 https://www.microsoft.com/en-US/download/details.aspx?id=1366 运行安装程序,rep ... 
- 今天微信小程序发现wx.request不好使了,调试报错: 小程序要求的 TLS 版本必须大于等于 1.2
			今天微信小程序发现wx.request不好使了,调试报错: 小程序要求的 TLS 版本必须大于等于 1.2 查官方文档 解决方法 在 PowerShell中运行以下内容, 然后重启服务器 # Enab ... 
- Python-__builtin__与__builtins__的区别与关系(超详细,经典)(转)
			Python-__builtin__与__builtins__的区别与关系(超详细,经典) (2013-07-23 15:27:32) 转载▼ 分类: Python 在学习Python时,很多人会 ... 
- C#.NET常见问题(FAQ)-如何引用定义好的dll文件
			1 添加引用,找到dll文件 2 引用类的名称空间,生成类的实例,调用类的方法,测试OK. 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com ... 
- android开发步步为营之67:使用android开源项目android-async-http异步下载文件
			android-async-http项目地址 https://github.com/loopj/android-async-http.android-async-http顾名思义是异步的http请求, ... 
