日志实现

日志的实现

简介

日志:记录程序日常运行状态。按条记录,记录内容包括:时间、模块、日志级别(致命、出错、警告、信息、调试)、输出位置(文件、终端、系统日志)
格式说明

  • 日志信息格式
yyyy-mm-dd hh-MM-ss [Level] module file:line func:message
日期 + 级别 +模块+ 文件名+行号+函数+具体的信息
  • 日志文件名格式
yyyy-mm-dd-XXXX.log
yyyy-mm-dd-XXXX2.log
  • 接口
级别详细信息
DEBUG(module,str)程序的调试信息,最低级
INFO(module,str)一般要显示的信息,比如登录,退出
ERROR(module,str)严重错误 主要是程序的错误
WARNING(module,str)一般警告,比如session丢失
FATAL(module,str)崩溃,整个程序终止运行
  • 实现思想
    • 打印时间
    • 调用系统的time系列函数设计一个Getcurrenttime()
string Getcurrenttime()
{
    time_t result;
    result = time(NULL);
    char* p=NULL;
    p= asctime(localtime(&result));
    return string(p);
}
  • 打印具体信息的内置宏
作用
FILE文件名
LINE行号
func函数名
  • 日志级别
  • 在不同的地方调用是不一样的,程序开始是调试,程序出错是出错。
  • 输出的位置
  • 默认输出终端
  • 指定路径就输出到指定的路径
简易版小日志
#include<iostream>
#include<cstdlib>
#include<time.h>
#include<cstdio>
#include<cstring>

using namespace std;
//得到当前时间的函数
string Getcurrenttime()
{
  time_t result;
  result = time(NULL);
  char* p=NULL;
  p= asctime(localtime(&result));
  return string(p);
}
//实现两个数相加的函数
long Add(long a,long b)
{
//输出日志模块
  cout<<Getcurrenttime()<<"[调试]"<<"Main"<<"在"<<__FILE__<<"文件中"<<"第"<<__LINE__<<"行的"<<__func__<<"函数中"<<endl;
  return a+b;
}
//主函数:Main函数
int main(int argc,char** argv)
{
//输出日志模块
  cout<<Getcurrenttime()<<"[调试]"<<"Main"<<"在"<<__FILE__<<"文件中"<<"第"<<__LINE__<<"行的"<<__func__<<"函数中"<<endl;
  if(3 != argc) {
      cout << "参数个数错误"<< endl;
      cout << "usage:" << argv[0] << "<数字1> <数字2>" << endl;
      return 1;
  }

  char* end = NULL;
  long a = strtol(argv[1],&end,10);
  if('\0' != *end) {
      cout << "第一个参数格式错误。" << endl;
      cout << "参数应该是整形数字" << endl;
      return 1;
  }

  long b = strtol(argv[2],&end,10);
  if('\0' != *end) {
      cout << "第二个参数格式错误。" << endl;
      cout << "参数应该是整形数字" << endl;
      return 1;
  }
  //调用相加函数
  long c=Add(a,b);
  cout<<c<<endl;
  return 0;

  cout<<"end"<<endl;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 .NET Framework 4.6.2 中,可以使用 AOP(面向切面编程)来实现日志记录。下面是一个简单的示例,演示了如何使用 PostSharp AOP 框架来实现日志记录: 1. 首先,需要在 Visual Studio 中安装 PostSharp AOP 框架。可以通过 NuGet 包管理器来安装。 2. 在项目中创建一个名为 `LoggingAspect` 的类,并实现 `OnEntry` 和 `OnExit` 方法。这两个方法分别在方法调用前和调用后被调用。在这两个方法中,可以编写日志记录的逻辑。 ```csharp using PostSharp.Aspects; using System; namespace MyProject { [Serializable] public class LoggingAspect : OnMethodBoundaryAspect { public override void OnEntry(MethodExecutionArgs args) { Console.WriteLine("Entering method {0}", args.Method.Name); } public override void OnExit(MethodExecutionArgs args) { Console.WriteLine("Exiting method {0}", args.Method.Name); } } } ``` 3. 在需要记录日志的方法上,添加 `LoggingAspect` 特性。这个特性将会在方法调用时自动地被触发。 ```csharp [LoggingAspect] public void MyMethod() { // some logic here } ``` 在上面的代码中,`MyMethod` 方法上添加了 `LoggingAspect` 特性,这意味着在执行 `MyMethod` 方法时,`LoggingAspect` 类中的 `OnEntry` 和 `OnExit` 方法将会被自动调用。 这样,当你调用 `MyMethod` 方法时,你将会看到类似下面的日志输出: ``` Entering method MyMethod // some logic here Exiting method MyMethod ``` 这就是一个简单的 AOP 日志记录的实现方式。当然,PostSharp AOP 框架还有很多其他的功能,如果你感兴趣的话,可以去官网了解更多信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值