当前位置: 首页 > news >正文

C#实现只保存2天的日志文件

文章目录

    • 业务需求
    • 代码
    • 运行效果

欢迎讨论!

业务需求

在生产环境中,控制台窗口不便展示出来。
为了在生产环境中,完整记录控制台应用的输出,选择将其输出到文件中。
但是,存储所有输出的话会占用很多空间,故而在时间上,只存储近期一段时间里的。
本项目实现:

将控制台输出重定向到文件。
按天存储,且仅存储最近2天的输出。

代码

这里在测试时,使用时分格式"HHmm"代替日期格式"yyyyMMdd"来测试。在实际应用时,应该使用后者。

public class Log2Days : TextWriter
{private string pathFormat = null;       // 可以根据文件计数打开的日志文件路径,待填充后缀private string path = null;             // 当日日志文件路径private string perviousPath = null;     // 前一日日志文件路径private string today = null;            // 今日,如20230402private StreamWriter fileWriter = null; // 文件写入对象public Log2Days(string defaultPath){Directory.CreateDirectory(Path.GetDirectoryName(defaultPath));// 解析原有路径,以为文件名添加后缀pathFormat = Path.Combine(Path.GetDirectoryName(defaultPath), Path.GetFileNameWithoutExtension(defaultPath) + "{0}" + Path.GetExtension(defaultPath));}/// <summary>/// 选择要输出的文件目标/// </summary>public void SelectTarget(){try{string theDay = DateTime.Now.ToString("HHmm");      // 今日日期要改为yyyyMMddif (fileWriter is null || !today.Equals(theDay))    // 未初始化,或未成功创建文件,或隔天{if (!(fileWriter is null))  // 隔天{   // 如果有文件正在使用,则关闭之fileWriter.Close();fileWriter.Dispose();fileWriter = null;if (File.Exists(perviousPath))  // 当前是第三天才会满足此条件File.Delete(perviousPath);  // 删除前天的文件(昨天成了前天)perviousPath = path;            // 更新昨日的路径}// 未初始化,或未成功创建文件today = theDay;                             // 今日日期path = string.Format(pathFormat, today);    // 今日路径fileWriter = new StreamWriter(path, true, Encoding.UTF8) { AutoFlush = true };  // 追加,如果今日已写则继续写}}catch { }}/// <summary>/// [可选]覆盖写的方法WriteLine(int)/// </summary>public override void WriteLine(int content){SelectTarget();fileWriter.WriteLine(content);}/// <summary>/// [可选]覆盖写的方法Write(int)/// </summary>public override void Write(int content){SelectTarget();fileWriter.Write(content);}/// <summary>/// 需实现抽象类的此方法/// </summary>public override Encoding Encoding{get { return fileWriter.Encoding; }}
}

运行效果

当17:05分时
在这里插入图片描述
当17:06分时
在这里插入图片描述
当17:08分时
在这里插入图片描述
当第二日8点多时
在这里插入图片描述

相关文章:

C#实现只保存2天的日志文件

文章目录 业务需求代码运行效果 欢迎讨论&#xff01; 业务需求 在生产环境中&#xff0c;控制台窗口不便展示出来。 为了在生产环境中&#xff0c;完整记录控制台应用的输出&#xff0c;选择将其输出到文件中。 但是&#xff0c;存储所有输出的话会占用很多空间&#xff0c;…...

C++ 类和对象(中篇)

类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。空类中什么都没有吗&#xff1f;并不是的&#xff0c;任何一个类在我们不写的情 况下&#xff0c;都会自动生成下面6个默认成员函数。 构造函数&#xff1a; 定义&#xff1a;构造函数是一个特殊的成员…...

可视化场景(9):智慧看板,可能是最直观的数据展示

10年经验的大数据可视化和数字孪生老司机&#xff0c;该领域的专家&#xff0c;是您可信赖的技术合伙人&#xff0c;分享该领域的项目和作品&#xff0c;欢迎互动交流。 hello&#xff0c;我是贝格前端工场&#xff0c;本期分享可视化大屏在安全生产与设备运维场景的应用&#…...

加密算法(二)

1、SHA-256加密算法&#xff1a; package com.arithmetic.encryption; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; //使用java.security.MessageDigest类来进行SHA-256摘要的计算。 //通过getInstance("SHA-256")方法获取…...

大创项目推荐 深度学习 YOLO 实现车牌识别算法

文章目录 0 前言1 课题介绍2 算法简介2.1网络架构 3 数据准备4 模型训练5 实现效果5.1 图片识别效果5.2视频识别效果 6 部分关键代码7 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于yolov5的深度学习车牌识别系统实现 该项目较…...

IP知识详解

IP基本认识 IP 在 TCP/IP 参考模型中处于第三层&#xff0c;也就是网络层。 网络层的主要作用是&#xff1a;实现主机与主机之间的通信&#xff0c;也叫点对点&#xff08;end to end&#xff09;通信。 网络层与数据链路层有什么关系呢&#xff1f; IP 的作用是主机之间通信…...

设计模式:适配器模式

定义 适配器模式&#xff08;Adapter Pattern&#xff09;&#xff0c;也称为包装器&#xff08;Wrapper&#xff09;模式&#xff0c;是一种结构型设计模式&#xff0c;它允许不兼容的接口之间进行交互。适配器模式通过包装一个已有的类&#xff0c;提供一个与原系统兼容的接…...

大语言模型落地的关键技术:RAG

1、什么是RAG&#xff1f; RAG 是检索增强生成&#xff08;Retrieval-Augmented Generation&#xff09;的简称&#xff0c;是当前最火热的大语言模型应用落地的关键技术&#xff0c;主要用于提高语言模型的效果和准确性。它结合了两种主要的NLP方法&#xff1a;检索&#xff…...

ffmpeg Android 笔记

目录 没有示例项目 编译好的.a文件 ffmpegandroid 延时有220ms rk官方有例子 ffmpeg Android 笔记 没有示例项目 编译好的.a文件 FFmpeg-Android/ffmpeg-android-aarch64-34/lib at main yhbsh/FFmpeg-Android GitHub ffmpegandroid 看到了音频解码器 FFmpegAndroid/a…...

本地创建新分支并提交gitee

初始化本地仓库 git init链接远程仓库 git remote add origin https://gitee.com/xxxxxxxxxxx提交本地代码(进行commit提交) git add . git commit -m "分支名"创建分支 git branch 分支名选择刚刚创建的分支 git checkout 分支名查看所选中的分支 git branch …...

[蓝桥杯 2019 国 C] 数正方形

[蓝桥杯 2019 国 C] 数正方形 题目描述 在一个 N N N \times N NN 的点阵上&#xff0c;取其中 4 4 4 个点恰好组成一个正方形的 4 4 4 个顶点&#xff0c;一共有多少种不同的取法&#xff1f; 由于结果可能非常大&#xff0c;你只需要输出模 1 0 9 7 10^9 7 1097 的…...

Redis: 配置文件详解(Redis.conf)

文章目录 一、Units二、INCLUDES三、NETWORK四、GENERAL五、SECURITY六、LIMITS 一、Units 单位&#xff0c;配置大小单位&#xff0c;开头定义了一些基本的度量单位&#xff0c;只支持bytes&#xff0c;不支持bit&#xff0c;大小写不敏感 二、INCLUDES 包含&#xff0c;多…...

学习vue3第十四节 Teleport 内置组件介绍

<Teleport></Teleport> 作用目的&#xff1a; 用于将指定的组件或者元素传送到指定的位置&#xff1b; 通常是自定义的全局通用弹窗&#xff0c;绑定到 body 上&#xff0c;而不是在当前元素上面&#xff1b; 使用方法&#xff1a; 接收两个参数 to: 要将目标传…...

mybatis模糊查询查不到数据

排除SQL语句本身存在错误,字段名称不匹配,编码格式问题后,若使用%方式查询,一开始使用单引号查询不到数据&#xff0c;把改成"&#xff0c;可以查询到数据 疑问&#xff1a;看别人的代码&#xff0c;使用单引号也可以查询到数据&#xff0c;原因未知...

Python语法总结:not(常出现错误)

0、not是什么 在python中not是逻辑判断词&#xff0c;用于布尔型True和False之前 a not Ture # a False b not False # b True1、not的用法 &#xff08;1&#xff09;判断语句 if not a:# 如果a是False&#xff0c;执行的语句&#xff08;2&#xff09;判断元素是否在…...

深入理解WebSocket:实时双向通信的利器

一、介绍 1.1 基础概念介绍 单工通信&#xff1a;数据传输只允许在一个方向上传输&#xff0c;只能一方发送数据&#xff0c;另一方接收数据并发送。半双工&#xff1a;数据传输允许两个方向上的传输&#xff0c;但在同一时间内&#xff0c;只可以有一方发送或接收数据。全双…...

Gateway是什么?(SpringCloudAlibaba组件)

1、网关介绍 **网关(Gateway)又称网间连接器、协议转换器。网关在传输层上以实现网络互连&#xff0c;是最复杂的网络互连设备&#xff0c;仅用于两个高层协议不同的网络互连。**网关的结构也和路由器类似&#xff0c;不同的是互连层。网关既可以用于广域网互连&#xff0c;也可…...

阿里巴巴拍立淘API新功能揭秘:图片秒搜商品,实现智能化个性化购物新体验

在数字化快速发展的今天&#xff0c;智能化和个性化已经成为购物体验中不可或缺的元素。为了满足消费者日益增长的购物需求&#xff0c;阿里巴巴中国站不断推陈出新&#xff0c;其中拍立淘API的新功能——图片秒搜商品&#xff0c;无疑为智能化个性化购物体验开创了新的篇章。 …...

蚓链为移动实体经济加油!

在当今数字化时代&#xff0c;数据已成为企业宝贵的资产之一。如何利用数据资产为可移动实体经济创造更多的增值机会呢&#xff1f;蚓链将为你揭示 11种行之有效的方法&#xff01; 1. 个性化服务&#xff1a;根据客户数据&#xff0c;提供量身定制的产品和服务&#xff0c;满…...

MySQL 核心模块揭秘 | 12 期 | 创建 savepoint

回滚操作&#xff0c;除了回滚整个事务&#xff0c;还可以部分回滚。部分回滚&#xff0c;需要保存点&#xff08;savepoint&#xff09;的协助。本文我们先看看保存点里面都有什么。 作者&#xff1a;操盛春&#xff0c;爱可生技术专家&#xff0c;公众号『一树一溪』作者&…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战&#xff0c;克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么&#xff1f;它的作用是什么&#xff1f; Spring框架的核心容器是IoC&#xff08;控制反转&#xff09;容器。它的主要作用是管理对…...

JavaScript 标签加载

目录 JavaScript 标签加载script 标签的 async 和 defer 属性&#xff0c;分别代表什么&#xff0c;有什么区别1. 普通 script 标签2. async 属性3. defer 属性4. type"module"5. 各种加载方式的对比6. 使用建议 JavaScript 标签加载 script 标签的 async 和 defer …...

6.计算机网络核心知识点精要手册

计算机网络核心知识点精要手册 1.协议基础篇 网络协议三要素 语法&#xff1a;数据与控制信息的结构或格式&#xff0c;如同语言中的语法规则语义&#xff1a;控制信息的具体含义和响应方式&#xff0c;规定通信双方"说什么"同步&#xff1a;事件执行的顺序与时序…...

HTML中各种标签的作用

一、HTML文件主要标签结构及说明 1. <&#xff01;DOCTYPE html> 作用&#xff1a;声明文档类型&#xff0c;告知浏览器这是 HTML5 文档。 必须&#xff1a;是。 2. <html lang“zh”>. </html> 作用&#xff1a;包裹整个网页内容&#xff0c;lang"z…...

CVE-2023-25194源码分析与漏洞复现(Kafka JNDI注入)

漏洞概述 漏洞名称&#xff1a;Apache Kafka Connect JNDI注入导致的远程代码执行漏洞 CVE编号&#xff1a;CVE-2023-25194 CVSS评分&#xff1a;8.8 影响版本&#xff1a;Apache Kafka 2.3.0 - 3.3.2 修复版本&#xff1a;≥ 3.4.0 漏洞类型&#xff1a;反序列化导致的远程代…...