继承log4.net的类
using System;
using System.Diagnostics; [assembly: log4net.Config.XmlConfigurator(Watch = true)]
namespace Hbl.Core
{
public static class Log
{ /// <summary>
/// 一般错误
/// </summary>
/// <param name="message">消息</param>
public static void Error(object message)
{
log4net.ILog log = log4net.LogManager.GetLogger(GetCurrentMethodFullName());
log.Error(message); } /// <summary>
/// 一般错误
/// </summary>
/// <param name="message">消息</param>
/// <param name="exception">异常</param>
public static void Error(object message, Exception exception)
{
log4net.ILog log = log4net.LogManager.GetLogger(GetCurrentMethodFullName());
log.Error(message, exception);
} /// <summary>
/// 信息
/// </summary>
/// <param name="message">消息</param>
public static void Info(object message)
{
log4net.ILog log = log4net.LogManager.GetLogger(GetCurrentMethodFullName());
log.Info(message);
} /// <summary>
/// 信息
/// </summary>
/// <param name="message">消息</param>
/// <param name="exception">异常</param>
public static void Info(object message, Exception ex)
{
log4net.ILog log = log4net.LogManager.GetLogger(GetCurrentMethodFullName());
log.Info(message, ex);
} /// <summary>
/// 警告
/// </summary>
/// <param name="message">消息</param>
public static void Warn(object message)
{
log4net.ILog log = log4net.LogManager.GetLogger(GetCurrentMethodFullName());
log.Warn(message);
} /// <summary>
/// 警告
/// </summary>
/// <param name="message">消息</param>
/// <param name="exception">异常</param>
public static void Warn(object message, Exception ex)
{
log4net.ILog log = log4net.LogManager.GetLogger(GetCurrentMethodFullName());
log.Warn(message, ex);
} /// <summary>
/// 调试
/// </summary>
/// <param name="message">消息</param>
public static void Debug(object message)
{
log4net.ILog log = log4net.LogManager.GetLogger(GetCurrentMethodFullName());
log.Debug(message);
} /// <summary>
/// 调试
/// </summary>
/// <param name="message">消息</param>
/// <param name="exception">异常</param>
public static void Debug(object message, Exception ex)
{
log4net.ILog log = log4net.LogManager.GetLogger(GetCurrentMethodFullName());
log.Debug(message, ex);
} static string GetCurrentMethodFullName()
{
try
{
int depth = ;
StackTrace st = new StackTrace();
int maxFrames = st.GetFrames().Length;
StackFrame sf;
string methodName, className;
Type classType;
do
{
sf = st.GetFrame(depth++);
classType = sf.GetMethod().DeclaringType;
className = classType.ToString();
} while (className.EndsWith("Exception") && depth < maxFrames);
methodName = sf.GetMethod().Name;
return className + "." + methodName;
}
catch
{
return null;
}
}
}
}
继承log4.net的类的更多相关文章
- JS面向对象组件 -- 继承的其他方式(类式继承、原型继承)
继承的其他形式: •类式继承:利用构造函数(类)继承的方式 •原型继承:借助原型来实现对象继承对象 类 : JS是没有类的概念的 , 把JS中的构造函数看做的类 要做属性和方法继承的时候,要分开继 ...
- Cocos2d 3.0继承自Sprite的类在addChild后出现故障
当继承自Sprite的类被addChild到其它的Node里后出现例如以下图问题,说明没有调用父类Sprite::init()的方法.由于父类Sprite里的_textureAtlas须要初始化为nu ...
- C++ Primer 学习笔记_69_面向对象编程 --继承情况下的类作用域
面向对象编程 --继承情况下的类作用域 引言: 在继承情况下,派生类的作用域嵌套在基类作用域中:假设不能在派生类作用域中确定名字,就在外围基类作用域中查找该名字的定义. 正是这样的类作用域的层次嵌套使 ...
- c++ 容器、继承层次、句柄类
一.容器与继承 在容器中保存有继承关系的对象,如果定义成保存基类对象,则派生类将被切割,如果定义成保存派生类对象,则保存基类对象又成问题(基类对象将被强制转换成派生类对象,而派生类中定义的成员未被初始 ...
- 第10章 接口、继承与多态----Object类
在Java中,所有的类都直接或间接继承了java.lang.Object类.Object类是比较特殊的类,它是所有类的父类,是Java类层中的最高层类.当创建一个类时,总是在继承,除非某个类已经指定要 ...
- 【17】有关python面向对象编程的提高【多继承、多态、类属性、动态添加与限制添加属性与方法、@property】
一.多继承 案例1:小孩继承自爸爸,妈妈.在程序入口模块再创建实例调用执行 #father模块 class Father(object): def __init__(self,money): self ...
- WPF 之 创建继承自Window 基类的自定义窗口基类
开发项目时,按照美工的设计其外边框(包括最大化,最小化,关闭等按钮)自然不同于 Window 自身的,但窗口的外边框及窗口移动.最小化等标题栏操作基本都是一样的.所以通过查看资料,可按如下方法创建继承 ...
- A:LinkedList实现了List接口; B: AbstractSet实现了Set接口; C: HashSet继承自AbstractSet基类; D: WeakMap继承自 AbstractMap
List,Set,Map在java.util包下都是接口 List有两个实现类:ArrayList和LinkedListSet有两个实现类:HashSet和LinkedHashSetAbstractS ...
- Java 线程--继承java.lang.Thread类实现线程
现实生活中的很多事情是同时进行的,Java中为了模拟这种状态,引入了线程机制.先来看线程的基本概念. 线程是指进程中的一个执行场景,也就是执行流程,进程和线程的区别: 1.每个进程是一个应用程序,都有 ...
随机推荐
- 如何利用WebClient模拟登陆CSRF控制的网站
一般我们都是利用WebRequest这个类来向服务器进行数据的POST,不过很多情况下相应的服务器都有验证,看你是不是登陆,是不是来自同一个域,这些都简单,我们可以更改其属性来达到欺骗服务器.不过如果 ...
- 使用python读取word
使用python读取word 官网:https://python-docx.readthedocs.io/en/latest/ 示例:https://blog.csdn.net/u010911997/ ...
- 超棒的HTML5/CSS3单页面响应式模板(支持Bootstrap)
在线演示 使用Bootstrap实现的响应式单页面模板. 桌面效果: 移动设备效果: 阅读全文:超棒的HTML5/CSS3单页面响应式模板(支持Bootstrap)
- swift 音乐播放器项目-《lxy的杰伦情歌》开发实战演练
近期准备将项目转化为OC与swift混合开发.试着写一个swift音乐播放器的demo,体会到了swift相对OC的优势所在.废话不多说.先上效果图: watermark/2/text/aHR0cDo ...
- T-SQL 之 语法元素
一.标识符 在T-SQL语言中,对SQLServer数据库及其数据对象(比如表.索引.视图.存储过程.触发器等)需要以名称来进行命名并加以区分,这些名称就称为标识符. 通常情况下,SQLServer数 ...
- WCF 之 已知类型(KnownType)
已知类型(Known types)允许在服务契约中使用多态的行为,在服务操作中暴露基本类型.将已知类型(known types)相关到基本类型(基类类型)自身;特定操作;整个服务契约采用属性声明或者配 ...
- python------@staticmethod和@classmethod的作用与区别
一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法. 而使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用. 这有利于组织代码,把某些应 ...
- vue 常见操作 及 ionic 实战回顾
npm install axios sass-loader vue-infinite-scroll vue-router vuex express superagent --save --save 和 ...
- linux sheel重复执行上条命令
Linux系统下Shell重复执行上条命令的 4 种方法: 1.使用上方向键,并回车执行. 2.按 !! 并回车执行. 3.输入 !-1 并回车执行. 4.按 Ctrl+P 并回车执行.
- 去除Odoo主页中的提示: Your Odoo is not supported.
来自 有两种方法可Odoo主页中的提示: Your Odoo is not supported. 方法1 - 修改源码 打开\addons\mail\static\src\js目录下的mail.js, ...