首页 > 编程语言 >C# ListBox 打印日志

C# ListBox 打印日志

时间:2023-06-28 15:04:11浏览次数:56  
标签:string C# DateTime txts LvLogHelper 日志 Now ListBox log

LvLogHelper.GetInstance(this.lbLog).PrintLog("初始化程序完成");
LvLogHelper.GetInstance().PrintLog("请连接综测仪表");
LvLogHelper.GetInstance().PrintLog("请加载测试用例");

using System;
using System.IO;
using System.Runtime.CompilerServices;
using System.Windows.Forms;
[assembly: SuppressIldasmAttribute()]

namespace LogHelper
{
    public class LvLogHelper
    {
        private ListBox LogBox;
        private LvLogHelper(ListBox logbox)
        {
            this.LogBox = logbox;
        }

        //定义一个用于保存静态变量的实例
        private static LvLogHelper instance = null;
        //定义一个保证线程同步的标识
        private static readonly object locker = new object();
        //构造函数为私有,使外界不能创建该类的实例
        private LvLogHelper() { }

        public static LvLogHelper GetInstance(ListBox lb)
        {
            if (instance == null)
            {
                lock (locker)
                {
                    if (instance == null) instance = new LvLogHelper(lb);
                }
            }
            return instance;
        }
        public static LvLogHelper GetInstance()
        {
            if (instance == null)
            {
                lock (locker)
                {
                    if (instance == null) instance = new LvLogHelper();
                }
            }
            return instance;
        }

        /// <summary>
        /// 打印日志
        /// </summary>
        /// <param name="log">日志信息</param>
        public void PrintLog(string log)
        {
            try
            {
                string txt = string.Format("--- {0}.{1}.{2}  {3}:{4}:{5}    :   ",
                    DateTime.Now.Year, DateTime.Now.Month,
                    DateTime.Now.Day, DateTime.Now.Hour,
                    DateTime.Now.Minute, DateTime.Now.Second);
                log = log.Trim();
                string txts = txt + log + "\r\n";

                LogBox.Items.Add(txts);
                LogBox.SelectedItem = txts;
            }
            catch { }
        }
        /// <summary>
        /// 打印日志(测试结果)
        /// </summary>
        /// <param name="log">日志</param>
        /// <param name="result">结果,例如pass或fail</param>
        public void PrintLog(string log, string result)
        {
            try
            {
                string txt = string.Format("--- {0}.{1}.{2}  {3}:{4}:{5}    :   ",
                    DateTime.Now.Year, DateTime.Now.Month,
                    DateTime.Now.Day, DateTime.Now.Hour,
                    DateTime.Now.Minute, DateTime.Now.Second);
                log = log.Trim();
                string txts = txt + log + "  -  " + result + "\r\n";

                LogBox.Items.Add(txts);
                LogBox.SelectedItem = txts;
            }
            catch { }
        }
        /// <summary>
        /// 打印日志(测试结果)
        /// </summary>
        /// <param name="log">日志</param>
        /// <param name="reason">原因</param>
        /// <param name="result">测试结果</param>
        public void PrintLog(string log, string reason, string result)
        {
            try
            {
                string txt = string.Format("--- {0}.{1}.{2}  {3}:{4}:{5}    :   ",
                    DateTime.Now.Year, DateTime.Now.Month,
                    DateTime.Now.Day, DateTime.Now.Hour,
                    DateTime.Now.Minute, DateTime.Now.Second);
                log = log.Trim();
                string txts = txt + log + "  -  " + reason + " > " + result + "\r\n";
                LogBox.Items.Add(txts);
                LogBox.SelectedItem = txts;
            }
            catch { }
        }

        public void SaveLogToFile(string path, ListBox lbbox)
        {
            if (File.Exists(path)) File.Delete(path);
            FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write);
            StreamWriter swLog = new StreamWriter(fs);
            swLog.Flush();
            swLog.BaseStream.Seek(0, SeekOrigin.End);// 使用StreamWriter来往文件中写入内容
            try
            {
                foreach (string log in lbbox.Items)
                {
                    swLog.Write(log);
                }
            }
            catch
            {
                swLog.Close();
            }
            finally
            {
                swLog.Flush();
                swLog.Close();
            }
        }

    }
}

  

标签:string,C#,DateTime,txts,LvLogHelper,日志,Now,ListBox,log
From: https://www.cnblogs.com/YYkun/p/17511385.html

相关文章

  • Docker通过build打包镜像--九五小庞
    -----------------------------------------通过build打包镜像,执行此命令需要创建Dockerfile文件,打包时,通过文件中指定的内容打包生成镜像dockerbuild-tsaas-pacs:1.1.1.运行容器dockerrun-itd-p18080:8080-p19527:9527-p18006:8006-p18007:8007-v/home/pxy/D......
  • C# 避免使用System.Environment.CurrentDirectory
    我有一个程序A(exe)是通过计划任务程序启动,发现通过System.Environment.CurrentDirectory获取的路径不是程序A的运行目录,而是C:\Windows\System32DirectoryInfotopDir=Directory.GetParent(System.Environment.CurrentDirectory);是因为System.Environment.CurrentDirectory......
  • Bean生命周期的扩展点:Bean Post Processor
    摘要:在本篇文章中,我们将深入探讨Spring框架中的重要组件——BeanPostProcessor。首先,我们将了解其设计理念和目标,然后通过实际的例子学习如何基础使用它,如何通过BeanPostProcessor改变Bean的初始化结果以及如何利用它修改Bean的属性。本文分享自华为云社区《Spring高手之路6——B......
  • [CS224W] 图机器学习 节点级特征
    节点度数(Nodedegree)结点\(v\)的度数\(k_v\)是\(v\)所邻接到的节点数量。平等对待所有邻居节点,没有考虑节点的重要性。节点中心性(Nodecentrality)考虑了节点的重要性。1.特征向量中心性(Eigenvectorcentrality)如果节点\(v\)的邻域\(u\inN(v)\)中有......
  • React学习时,outlet配置(token判定,页面path监听)
    尽管写过outlet路由的配置。考虑到token判定和路由页变更,我不了解v6是不是有更详解的做法。决定调一下配置,期望在任何页面异步更新时,token都可以在跳转前被检测到,防止无token跳转发生。为src文件配置v6版本:路由子组件App.jsimport{HashRouter,Routes,Ro......
  • Vscode自动生成注释的神器-KoroFileHeader
    1、安装KoroFileHeader设置-->扩展(ctrl+S)-->搜索KoroFileHeader,并安装 2、设置函数注释与文档注释设置—》搜索fileheaderconfiguration-》编辑setting.json文件设置自己的注释格式  //文件头注释"fileheader.customMade":{"Filename":"",......
  • 从数据类型 varchar 转换为 numeric 时出错
     原文链接:https://pythonjishu.com/ddotfpypwo/通常,这种错误是由以下原因之一导致的:字符串包含不能被解析为数字的字符,例如字母、符号等。字符串的长度超过了numeric类型的最大长度。如:Numeric(10,2)指字段是数字型,长度为10小数为两位字符串的格式不符合numeric类型......
  • Kubernetes编程——client-go基础—— TypeMeta
    TypeMetahttps://github.com/kubernetes/apimachinery/blob/release-1.27/pkg/runtime/types.go runtime.Object只是一个接口,我们想了解它具体时间怎么实现的。k8s.io/api中的Kubernetes对象通过内嵌k8s.io/apimachinery/meta/v1中的metav1.TypeMeta结构,为schema.Obj......
  • Linux curl命令详解
    命令:curl在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具。语法:#curl[option][url]常见参数:-A/--user-agent<string>设置用户代理......
  • 配置使用iscsi
    配置使用iscsi请确保服务器A上已经关闭了防火墙或者允许了3260端口。下图描述了使用iSCSI的大致过程,后文内容虽然因为介绍各种用法而显得比较杂,但根据这张图的流程,阅读时很容易搞清楚相关内容。gtadm是一个高度模式化的命令,他们的模式很相近。有三个模式:target、logicalunit......