简单封装的Log4net
1. [代码]使用
log = new Logger(this.GetType());
log.Info("Hello world.");
2. [代码]第二个版本,修复了Console重复发送消息的问题
using System;
using System.Collections.Generic;
using System.Text;
using log4net;
using log4net.Config;
using log4net.Appender;
using log4net.Layout;
using log4net.Core;
using log4net.Repository.Hierarchy;
namespace ShotInfoImport
{
class AutoLog
{
private Logger logger;
public AutoLog(Type this_getType)
{
//config the log4net to output the file
ILayout layout = new PatternLayout("%d[Thread:%t]%-5p %c [Line:%L] - %m%n");
IAppender fileAppender = new FileAppender(layout, "log.txt");
IAppender consoleAppender = new ConsoleAppender(layout);
BasicConfigurator.Configure(fileAppender);
//error it print the number is up !
BasicConfigurator.Configure(consoleAppender);
//init the log object to output
ILog iLog = LogManager.GetLogger(this_getType);
logger = (Logger)iLog.Logger;
logger.AddAppender(consoleAppender);
logger.AddAppender(fileAppender);
logger.Additivity = false;
}
public void Info(Object message)
{
logger.Log(Level.Info,message, null);
}
public void Info(Object message, Exception exception)
{http://www.bizhizu.cn/linglei/
logger.Log(Level.Info, message, exception);
}另类图片
public void Debug(Object message)
{
logger.Log(Level.Debug, message, null);
}
public void Debug(Object message, Exception exception)
{
logger.Log(Level.Debug, message, exception);
}
public void Warning(Object message)
{
logger.Log(Level.Warn, message, null);
}
public void Warning(Object message, Exception exception)
{
logger.Log(Level.Warn, message, exception);
}
public void Error(Object message)
{
logger.Log(Level.Error, message, null);
}
public void Error(Object message, Exception exception)
{
logger.Log(Level.Error, message, exception);
}
public void Fatal(Object message)
{
logger.Log(Level.Fatal, message, null);
}
public void Fatal(Object message, Exception exception)
{
logger.Log(Level.Fatal, message, exception);
}
}
}
简单封装的Log4net的更多相关文章
- .net core 中简单封装Dapper.Extensions 并使用sqlsuger自动生成实体类
引言 由公司需要使用dapper 同时支持多数据库 又需要支持实体类 又需要支持sql 还需要支持事务 所以采用了 dapper + dapperExtensions 并配套 生成实体类小工具的方 ...
- Android AsyncTask 深度理解、简单封装、任务队列分析、自定义线程池
前言:由于最近在做SDK的功能,需要设计线程池.看了很多资料不知道从何开始着手,突然发现了AsyncTask有对线程池的封装,so,就拿它开刀,本文将从AsyncTask的基本用法,到简单的封装,再到 ...
- FMDB简单封装和使用
工具:火狐浏览器+SQLite Manager插件 ; Xcode; FMDB库; 效果: 项目地址: https://github.com/sven713/PackFMDB 主要参考这两篇博客: 1 ...
- Android--Retrofit+RxJava的简单封装(三)
1,继续接着上一篇的讲讲,话说如果像上一篇这样的话,那么我们每一次请求一个结构都要创建一堆的Retrofit对象,而且代码都是相同的,我们可以试试封装一下 先创建一个HttpMethods类,将Ret ...
- okhttp3 get post 简单封装
最近打算在新项目中使用 okhttp3, 简单封装了一下异步 get post 因为 CallBack 也是在子线程中执行,所以用到了 Handler public class MyOkHttpCli ...
- python网页请求urllib2模块简单封装代码
这篇文章主要分享一个python网页请求模块urllib2模块的简单封装代码. 原文转自:http://www.jbxue.com/article/16585.html 对python网页请求模块ur ...
- 对pymysql的简单封装
#coding=utf-8 #!/usr/bin/python import pymysql class MYSQL: """ 对pymysql的简单封装 "& ...
- iOS开发——UI篇OC篇&UITableView简单封装
UITableView简单封装 UITableView时iOS开发中使用最多也是最重的一个UI空间,其实在App Store里面的%80以上的应用都用到了这个控件,所以就给大家介绍一下,前面的文章中也 ...
- iOS sqlite 增删改查 简单封装(基于 FMDB)
/** * 对 sqlite 的使用进行简单封装,仅涉及简单的单表 增删改查 * * 基于 FMDB * * 操作基于 model ,数据库表字段与 model 属性一一对应,对 model 整 ...
随机推荐
- freemarker在xml文件中遍历list数据
delete from pub_channelpackage where channelcode = :channelcode and channeltype = :channeltype ...
- PHP里的socket_recv方法解释
以前一直经为PHP里没有低级的socket帧接收函数,看来是没看仔细,不过那些说明也太少了,(更令人气的里在英文版说明里的例子下有一句话:这个程序不能运行,因为没用listen函数,但在中文版里却没了 ...
- 怎样解决mysql最后一步提示未响应
1.在开始菜单下,点击运行,输入regedit,进入注册表编辑器目录下 2.在注册表编辑器里system下找到controlset001,controlset002,currentcontrolset ...
- 【转】使用Python学习selenium测试工具
出处:https://my.oschina.net/u/1433482/blog/633231?fromerr=vaxqh9bn
- 纯JS实现动态时间
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 列表按照字母排序检索SideBar
项目中要求列表按照ABCD这种字母排序检索的功能,看了大神写的,瞬间崇拜了,接下来借大家参考参考了 首先是自定义view sidebar /** * @author J *一个自定义view 实现a- ...
- POJ 2031 Building a Space Station【经典最小生成树】
链接: http://poj.org/problem?id=2031 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22013#probl ...
- CSS 布局实例系列(三)如何实现一个左右宽度固定,中间自适应的三列布局——也聊聊双飞翼
今天聊聊一个经典的布局实例: 实现一个三列布局,其中左侧和右侧的部分宽度固定,中间部分宽度随浏览器宽度的变化而自适应变化 可能很多朋友已经笑了,这玩意儿通过双飞翼布局就能轻松实现.不过,还请容我在双飞 ...
- python爬虫之Selenium
Selenium的使用 #!/usr/bin/env python # -*- coding:utf-8 -*- """ Selenium是一个第三方模块,可以完全模拟用 ...
- GPS模块坐标偏差很大?
回答这个问题,首先要了解几个概念: 火星坐标系:天朝有关部门规定,为了保证国家安全,所有的地图公司提供的地图必须对实际的GPS坐标进行一定的偏移,偏移后的GPS坐标系俗称火星坐标系,而这个偏移是不固定 ...