前言

log4net是一个日志插件,可以帮助我们把控制台输出的日志写入到本地。这个功能说简单就简单,说复杂其实还挺复杂。
为什么这么说呢,首先文件写入本地确实简单,但是如果你要实现一下功能就没那么简单了。

  • 1.把每行日志按照指定格式写入,方便查看,
  • 2.按照不同日期切分日志文件
  • 3.日志文件太大可以自动切换文件,即:日志轮转功能。
  • 4.可以自定义设置最大文件大小
  • 5.可以自定义多久清理一次日志
    相比大家就知道,实现一个好的日志管理系统没那么容易了。而log4net就是这么一个工具可以帮助我们。

下载地址:

Github地址:https://github.com/apache/logging-log4net
官网地址:https://logging.apache.org/log4net/download_log4net.html

导入插件

下载完插件,里面有很多不同net版本的,我们直接导入net45的版本,记得把Unity的API Compabbility Level 设置为.Net4.x


log4net.configer配置文件

配置文件的配置方式:https://logging.apache.org/log4net/release/manual/configuration.html
这里给大家提供一个log4net.configer,放到项目Assets/StreamingAssets目录下

<?xml version="1.0" encoding="utf-8" ?>
<configuration><configSections><section name="log4net" type="System.Configuration.IgnoreSectionHandler"/></configSections><appSettings></appSettings><log4net><appender name="FileAppender" type="log4net.Appender.RollingFileAppender"><!--保存到文件-->     <file type="log4net.Util.PatternString" value="%property{ApplicationLogPath}\\%property{LogFileName}.log" /><rollingStyle value="Composite" /><datePattern value="yyyy-MM-dd" /><staticLogFileName value="false" /><param name="Encoding" value="utf-8" />  <maximumFileSize value="100MB" />      <countDirection value="0" />         <maxSizeRollBackups value="100" /><appendToFile value="true" />      <layout type="log4net.Layout.PatternLayout"><conversionPattern value="记录时间:%date 线程:[%thread] 日志级别:%-5level 记录类:%logger 日志消息:%message%newline" /></layout></appender><appender name="UiLogAppender" type="UiLogAppender"></appender><logger name="FileLogger" additivity="false">    <level value="DEBUG" /><appender-ref ref="FileAppender" /></logger></log4net>
</configuration>

集成类

我们调用一下Logger.Init()函数即可,不用做其他任何操作了。正常使用Unity自带的Debug.LogXXX即可。

using System.IO;
using log4net;
using UnityEngine;public static class Logger
{private static ILog log = LogManager.GetLogger("FileLogger"); //FileLoggerpublic static void Init(){Application.logMessageReceived += onLogMessageReceived; //添加unity日志监听//ApplicationLogPath和LogFileName在log4net.config中使用FileInfo file = new System.IO.FileInfo(Application.streamingAssetsPath+ "/log4net.config"); //获取log4net配置文件GlobalContext.Properties["ApplicationLogPath"] = Path.Combine(Directory.GetCurrentDirectory(), "Log"); //日志生成的路径GlobalContext.Properties["LogFileName"] = "log"; //生成日志的文件名log4net.Config.XmlConfigurator.ConfigureAndWatch(file); //加载log4net配置文件Debug.Log("日志初始化");}private static void onLogMessageReceived(string condition, string stackTrace, LogType type){switch (type){case LogType.Error:log.ErrorFormat("{0}\r\n{1}", condition, stackTrace.Replace("\n", "\r\n"));break;case LogType.Assert:log.DebugFormat("{0}\r\n{1}", condition, stackTrace.Replace("\n", "\r\n"));break;case LogType.Exception:log.FatalFormat("{0}\r\n{1}", condition, stackTrace.Replace("\n", "\r\n"));break;case LogType.Warning:log.WarnFormat("{0}\r\n{1}", condition, stackTrace.Replace("\n", "\r\n"));break;default:log.Info(condition);break;}}
}

Unity接入日志插件Log4Net相关推荐

  1. 日志插件 log4net 的使用

    文本格式说明 可以记载的日志类别包括:FATAL(致命错误).ERROR(一般错误).WARN(警告).INFO(一般信息).DEBUG(调试信息). 文本参数说明 %m(message):输出的日志 ...

  2. [SDK]Unity接入Sign in with Apple

    iOS13之后引入了Sign in with Apple,Sign In with Apple是跨平台的,可以支持iOS.macOS.watchOS.tvOS.JS.对iOS上的App而言,若引入第三 ...

  3. Unity接入穿山甲广告(使用Unity3D插件)

      最近要接入穿山甲广告,我把穿山甲广告相关的接入流程记录一下,说说最近踩过的坑,和怎么解决的问题.注意我们需求是只发安卓包没有iOS的需求,本篇只介绍Unity接入安卓相关的处理(帖子是2019年底 ...

  4. C# Asp.Net6 MVC,Log4net NLog 日志插件应用 及Windows、Liux环境下程序发布

    C# Asp.Net6 MVC,Log4net NLog 日志插件应用 及Windows.Liux环境下程序发布 一. MVC含义 二.数据传输 1.控制器向视图传输数据 三.日志组件Log4net ...

  5. Unity接入Google登录

    Unity接入Google登录 接入FireBaseSdk和GoogleSignIn插件 FireBase接入文档 GoogleSignIn 编写登录代码 可能出现的问题 运行时弹出Google登录界 ...

  6. Unity接入ChatGPT基于Python.Runtime的实现

    目录 前言 编译Python.Runtime.dll Unity接入ChatGPT 1.第一步 准备环境 2.第二步 python代码的书写 3.第三步 C#调用python代码 前言: 相信各位游戏 ...

  7. Unity接入GooglePlay内购V4(源生Android方式)

    Unity接GooglePlay In-App Billing坑还是蛮多的,各种坑. 接的方式目前来看有三种: 采用Unity IAP插件,开启Unity的IAP Service 采用Android源 ...

  8. Unity接入罗技G29方向盘,通过SDK获取按键信息

    Unity接入罗技G29方向盘,通过SDK获取按键信息 说明:   最近需要做一个外设汽车驾驶相关的软件,采用的外设 罗技G29方向盘,项目中遇到的问题这里记录一下. 项目准备:   1.下载罗技的S ...

  9. 基于log4net的日志组件扩展封装,实现自动记录交互日志 XYH.Log4Net.Extend(微服务监控)...

    背景: 随着公司的项目不断的完善,功能越来越复杂,服务也越来越多(微服务),公司迫切需要对整个系统的每一个程序的运行情况进行监控,并且能够实现对自动记录不同服务间的程序调用的交互日志,以及通一个服务或 ...

最新文章

  1. 企业数字化转型,一文通读什么是数字化中台?
  2. 【maven插件】flatten-maven-plugin : 处理版本占位符
  3. 使用一些可选的将字符串配置属性转换为其他类型
  4. 【CLion】如何编译运行单个文件 (C/C++ Single File Execution插件的使用)
  5. mysql命令导出数据不完整_使用MySQL MySqldump命令导出数据时的注意事项
  6. ZOJ-1010 奇偶剪枝
  7. 25. 自定义Git
  8. Qt之QTreeView的简单使用(含源码+注释)
  9. 流程即代码:云研发、低代码 IDE —— Uncode
  10. 分数阶微分_分数微分特征
  11. 融创孙喆一:父辈的光环与阴影下,我反对扮演所谓的二代
  12. uniapp 即时通讯_uniapp中与webview的即时通讯
  13. Anaconda详细安装及使用教程
  14. 无需翻墙使用ChatGPT-4
  15. 该内存不能为“read”的解决方法
  16. VS2017中解决MSB4030报错问题
  17. (转)ANDROID强制锁定竖屏_APP固定设置竖屏或横屏
  18. 第一次使用acme.sh 手动生成证书(DNS手动模式)
  19. 用 Python + Appium 的方式自动化清理微信僵尸好友
  20. c语言 拷入pdf,怎么样才能把PDF文档从电脑拷到U盘

热门文章

  1. (二)Ardupilot软件分析及代码架构
  2. 「华大基因」追风做BaaS平台,基因科技和区块链能碰撞出什么未来?
  3. 解析html网页脆炸鸡,脆皮炸鸡别再买了, 用这个方法做, 肉嫩入味, 脆鳞片片, 零失败!...
  4. KP3114电源IC介绍--【其利天下】
  5. 使用JDBC实例理解数据库的事务隔离
  6. java 三维旋转立方体_【转】 CATransform3D 矩阵变换之立方体旋转实现细节
  7. DNS服务——搭建企业内网DNS服务器的作用
  8. office2007中公式编辑器
  9. 游戏道具存储mysql_游戏服务器存储系统设计
  10. curl命令行发送POST请求