简单粗暴的“Debug模式”

本文介绍了一种方法,通过修改配置文件中的值来判断程序是在Visual Studio调试环境中运行,还是作为exe文件在系统上执行,从而实现Debug模式的区分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在项目中,通常会遇到:调试程序和程序在线上运行时程序运行的参数不一样,

例如线上运行时程序是获取线上的机器的ip,而调试程序时,我们会指定一个ip进行调试。

又或者项目要与多个系统进行数据交换,调试的时候想屏蔽掉(不执行)这些交互的代码。

这时,我们想:要是程序能知道我们是在用Visual Studio进行调试,还是用户点击的exe执行文件使用系统,

那该美好呀!这就是Debug模式!下面我用自己的方法,实现了让程序知道是用户点的exe还是vs在调试程序。

首先我建了一个wpf应用程序(windowsForm或webForm或其它应用程序都可以),wpf程序界面上只有一个TextBlock,

用来显示当前是Debug模式或是 非Debug模式。如下图:

然后选中工程-右键-添加-新建项-应用程序配置文件(app.config),如下图:

 

双击app.config文件,新增两个相同key值的appSetting,key值为IsDebug,value的值分别为true和false,然后注释掉其中一个,如下图:

打开wpf程序窗体的cs文件(MainWindow),添加一个bool类型的IsDebug属性,

 然后在MainWindow的构造函数里获取配置文件key值为IsDebug的value,给IsDebug属性赋值,如下图:

至此,我们就可以通过IsDebug属性来判断当前是不是Debug模式了。用VS进行调试程序时,把配置文件里的key值为IsDebug的Value设置为true,

发布程序时把配置文件里的key值为IsDebug的Value设置为false。

然后程序要判断是否是Debug模式时,只需判断IsDebug属性了。

 

当配置文件里的key值为IsDebug的value为true时,程序运行截图如下:

当配置文件里的key值为IsDebug的value为false时(注释为true的配置文件字符串,把为false的取消注释):

程序运行截图如下:

程序源码如下:

XAML:

<Window x:Class="IsDebug_Demo.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <TextBlock x:Name="tb"/>
    </Grid>
</Window>
View Code

 

C#:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Configuration;

namespace IsDebug_Demo
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        private bool isDebug;
        /// <summary>
        /// 是否是Debug模式
        /// </summary>
        public bool IsDebug
        {
            get { return isDebug; }
            set { isDebug = value; }
        }
        
        public MainWindow()
        {
            InitializeComponent();
            //获取配置文件key值为IsDebug的value,给IsDebug属性赋值,用来判断当前是否为Debug模式
            this.IsDebug = bool.Parse(ConfigurationManager.AppSettings["IsDebug"]);
            if (IsDebug)
            {
                tb.Text = "这是Debug模式!";
                tb.Foreground = Brushes.Red;
            }
            else
            {
                tb.Text = "这不是Debug模式!";
                tb.Foreground = Brushes.Green;
            }
        }
    }
}
View Code

 

配置文件:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <!--<add key="IsDebug" value="true" />-->
    <add key="IsDebug" value="False" />
  </appSettings>
</configuration>
View Code

 

转载于:https://www.cnblogs.com/527289276qq/p/4492140.html

### MyBatis Plus 配置仅打印 SQL 而不打印结果集 为了实现 MyBatis 或 MyBatis-Plus 仅打印 SQL 查询语句而屏蔽结果集的输出,可以通过调整日志框架以及相关配置来完成。 #### 方法一:通过 Log4j 控制日志级别 如果项目中使用的是 Log4j 日志框架,则可以按照以下方式修改 `application.yml` 文件: ```yaml logging: level: com.xx.xxx.mapper: DEBUG # 设置到 Mapper 所在的具体包路径[^1] ``` 上述配置会启用指定 Mapper 层的日志记录功能,并将其日志级别设为 `DEBUG`。此时只会显示 SQL 查询语句,而不会展示查询的结果数据。 需要注意的是,在这种情况下应 **注释掉** 原始的 MyBatis-Plus 日志实现配置部分: ```yaml # mybatis-plus: # configuration: # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl ``` 这样能够避免重复定义日志行为并确保由 Log4j 来接管整个日志管理过程。 #### 方法二:禁用默认日志机制 另一种方法是完全关闭 MyBatis 自带的日志系统,转而依赖外部更灵活的日志工具如 SLF4J 或 Logback 进行控制。具体操作如下所示: 将原有的 `log-impl` 参数设定改为无效果模式即 `NoLoggingImpl` 类型: ```yaml mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl # 关闭内部日志输出[^2] ``` 与此同时保持其他高级别的全局或者局部日志策略有效即可满足需求。 综上所述,推荐优先采用基于第三方强大且成熟的日志解决方案(例如Log4j),因为它提供了更为精细粒度的操作选项;当然也可以简单粗暴地切换至静默状态下的内置处理方案作为备选手段之一。 ```python # 示例 Python 代码无关于此问题解答,仅为占位符. print("This is a placeholder.") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值