【JAVA】日志与枚举

【日志】

【日志与输出语句区别】

输出语句日志技术
取消日志需要修改代码,灵活性比较差不需要修改代码,灵活性比较好
输出位置只能是控制台可以将日志信息写入到文件或者数据库中
多线程和业务代码处于一个线程中多线程方式记录日志,不影响业务代码的性能

 

【特点】:

  1. 通过使用日志技术,我们可以控制日志信息输送的目的地是控制台、文件等位置
  2. 我们也可以控制每一条日志的输出格式
  3. 通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程
  4. 以上操作可以通过一个配置文件来灵活地进行配置,而不需要修改应用代码

【日志框架——Logback】

【概述】:

Logback是基于slf4j的日志规范实现的框架

【Logback主要分为三个技术模块】

logback-core:该模块为其他两个模块提供基础代码,必须有

logback-classic:完整实现了slf4jAPI的模块

logback-access:与Tomcat和Jetty等Servlet容器集成,以提供Http访问日志功能

【步骤】:

  1. 导入Logback的相关jar包
  2. 编写Logback配置文件
  3. 在代码中获取日志的对象
  4. 按照级别设置记录日志信息

例:

public class LogDemo {
    //获取日志对象
    private static final Logger LOGGER= LoggerFactory.getLogger(LogDemo.class);
    public static void main(String[] args) {
        //打印日志
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入你的姓名:");
        String name=sc.nextLine();
        LOGGER.info("用户输出录入姓名为:"+name);
        System.out.println("请输入你的年龄:");
        String age=sc.nextLine();
        try {
            int ageInt = Integer.parseInt(age);
            LOGGER.info("用户输入的年龄格式正确:"+age);
        } catch (NumberFormatException e) {
            LOGGER.info("用户输入的年龄格式错误:"+age);
        }
    }
}

【日志输出级别】

级别程度依次是:TRACE<DEBUG<INFO<WARN<ERROR<FATAL

【作用】:

将开发中不同的日志信息进行分类,只输出大于等于该级别的日志信息

【注意】:

默认级别是debug(忽略大小写)

ALL和OFF分别是打开全部日志信息,及关闭全部日志信息

例:LOGGER.error("error级别的日志信息");

【枚举】

【概述】:

为了间接的表示一些固定的值

【格式】:是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内。

public enum s { 
    枚举项1,枚举项2,枚举项3;
}

【注意】:

定义枚举类要用关键字enum

【特点】:

  1. 所有枚举类都是Enum的子类
  2. 我们可以通过"枚举类名.枚举项名称"去访问指定的枚举项
  3. 每一个枚举项其实就是该枚举的一个对象
  4. 枚举也是一个类,也可以去定义成员变量
  5. 枚举类的第一行上必须是枚举项,最后一个枚举项后的分号是可以省略的,但是如果枚举类有其他的东西,这个分号就不能省略。建议不要省略
  6. 枚举类可以有构造器,但必须是private的,它默认的也是private的。枚举项的用法比较特殊:枚举(""){ };
  7. 枚举类也可以有抽象方法,但是枚举项必须重写该方法

例:

public enum Season {
    SPRING("春"){
        @Override
        public void show() {
            System.out.println(this.name);
        }
    },
    SUMMER("夏"){
        @Override
        public void show() {
            System.out.println(this.name);
        }
    },
    AUTUMN("秋"){
        @Override
        public void show() {
            System.out.println(this.name);
        }
    },
    WINTER("冬"){
        @Override
        public void show() {
            System.out.println(this.name);
        }
    };

    public String name;
    //有参构造
    Season(String name) {
        this.name = name;
    }
    //抽象方法
    public abstract void show();
}

【成员方法】

String name():获取枚举项的名称

int ordinal():返回枚举项在枚举类中的索引值

int compareTo(E o):比较两个枚举项,返回的是索引值的差值

String toString():返回枚举常量的名称

static <T> T valueOf(Class<T> type,String name):获取指定枚举类中的指定名称的枚举值

values():获得所有的枚举项

例:

//枚举类
public enum Season {
    SPRING,SUMMER,AUTUMN,WINTER;
}
    public static void main(String[] args) {
        //获取枚举名称
        String name = Season.SPRING.name();
        System.out.println(name);
        System.out.println("------------------------");
        //返回枚举在类中的索引值
        int index1 = Season.SPRING.ordinal();
        int index2 = Season.SUMMER.ordinal();
        int index3 = Season.AUTUMN.ordinal();
        int index4 = Season.WINTER.ordinal();
        System.out.println(index1);
        System.out.println(index2);
        System.out.println(index3);
        System.out.println(index4);
        //比较枚举项,返回索引差值
        int result = Season.SPRING.compareTo(Season.WINTER);
        System.out.println(result);
        //返回枚举常量的名称
        String s = Season.SPRING.toString();
        System.out.println(s);
        //获取指定枚举类中的指定名称的枚举类
        Season spring = Enum.valueOf(Season.class, "SPRING");
        System.out.println(spring);
        System.out.println(Season.SPRING == spring);
        //获取所有的枚举项
        Season[] values = Season.values();
        for (Season value : values) {
            System.out.println(value);
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lx_Hy_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值