c# Attribute之CallerMemberName、CallerFilePath、CallerLineNumber 获取方法及代码行号

CallerMemberName、CallerFilePath、CallerLineNumber特性

CallerMemberName:调用方法的名称
CallerFilePath:调用方法的所在的类文件绝对地址
CallerLineNumber:调用方法所在行号

可以用来记录日志,能够获取记录日志所在的行号和方法及调用文件

public class LogHelp
    {
        public static void Info(
              string message,
          [CallerMemberName] string memberName = "",
          [CallerFilePath] string sourceFilePath = "",
          [CallerLineNumber] int sourceLineNumber = 0)
        {
            Console.WriteLine("信息为: " + message);
            Console.WriteLine("方法名称: " + memberName);
            Console.WriteLine("源文件地址: " + sourceFilePath);
            Console.WriteLine("方法使用所在行号: " + sourceLineNumber);
        }

        public static void Debug(
              string message,
          [CallerMemberName] string memberName = "",
          [CallerFilePath] string sourceFilePath = "",
          [CallerLineNumber] int sourceLineNumber = 0)
        {
            Console.WriteLine("信息为: " + message);
            Console.WriteLine("方法名称: " + memberName);
            Console.WriteLine("源文件地址: " + sourceFilePath);
            Console.WriteLine("方法使用所在行号: " + sourceLineNumber);
        }

        public static void Error(
             Exception ex,
         [CallerMemberName] string memberName = "",
         [CallerFilePath] string sourceFilePath = "",
         [CallerLineNumber] int sourceLineNumber = 0)
        {
            Console.WriteLine("信息为: " + ex.Message);
            Console.WriteLine("方法名称: " + memberName);
            Console.WriteLine("源文件地址: " + sourceFilePath);
            Console.WriteLine("方法使用所在行号: " + sourceLineNumber);
        }

    }

控制台测试:

 class Program
    {
        static void Main(string[] args)
        {
            LogHelp.Info("*******Info********");
            Console.ReadKey();
        }
}

输出结果:能够清除看到调用类Program、调用方法Main、所在行14 Line

那么在正式环境怎么样呢,删除掉Debug目录下的pdb文件,结果跟上面一样:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值