IDEA下Logback.xml自动提示功能配置

news/2024/10/20 15:55:51/

首先打开logback的配置文件,在configuration标签中加入xsd的配置

<configuration  xmlns="http://ch.qos.logback/xml/ns/logback"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://ch.qos.logback/xml/ns/logbackhttps://raw.githubusercontent.com/enricopulatzo/logback-XSD/master/src/main/xsd/logback.xsd">
</configuration>

然后将鼠标光标放到https://raw.githubusercontent.com/enricopulatzo/logback-XSD/master/src/main/xsd/logback.xsd 的红色区域上,按alt+enter, 点击fetch external resource,会自动下载xsd文件。

在这里插入图片描述

如果无法下载,则在resource下创建logback.xsd文件

<?xml version="1.0" encoding="UTF-8"?>
<!--logback.xml schema,https://github.com/enricopulatzo/logback-XSDhttps://github.com/nkatsar/logback-XSD
-->
<xsd:schema targetNamespace="http://ch.qos.logback/xml/ns/logback"xmlns="http://ch.qos.logback/xml/ns/logback"xmlns:xsd="http://www.w3.org/2001/XMLSchema"elementFormDefault="qualified"attributeFormDefault="unqualified"version="1.1"><xsd:element name="configuration" type="Configuration"/><xsd:element name="included" type="Configuration"/><xsd:complexType name="Configuration"><xsd:choice maxOccurs="unbounded"><xsd:element name="shutdownHook" minOccurs="0" maxOccurs="1" type="ShutdownHook"/><xsd:element name="statusListener" minOccurs="0" maxOccurs="unbounded" type="StatusListener"/><xsd:element name="contextListener" minOccurs="0" maxOccurs="unbounded" type="ContextListener"/><xsd:element name="jmxConfigurator" minOccurs="0" maxOccurs="1" type="JmxConfigurator"/><xsd:element name="conversionRule" minOccurs="0" maxOccurs="unbounded" type="ConversionRule"/><xsd:element name="include" minOccurs="0" maxOccurs="unbounded" type="Include"/><xsd:element name="contextName" minOccurs="0" maxOccurs="1" type="xsd:string"/><xsd:element name="define" minOccurs="0" maxOccurs="unbounded" type="Define"/><xsd:element name="timestamp" minOccurs="0" maxOccurs="1" type="Timestamp"/><xsd:element name="if" minOccurs="0" maxOccurs="unbounded" type="If"/><xsd:element name="property" minOccurs="0" maxOccurs="unbounded" type="Property"/><xsd:element name="appender" minOccurs="0" maxOccurs="unbounded" type="Appender"/><xsd:element name="logger" minOccurs="0" maxOccurs="unbounded" type="Logger"/><xsd:element name="root" minOccurs="0" maxOccurs="1" type="Root"/><xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/></xsd:choice><xsd:attribute name="debug" type="xsd:boolean" use="optional"/><xsd:attribute name="scan" type="xsd:boolean" use="optional" default="false"/><xsd:attribute name="scanPeriod" type="xsd:string" use="optional" default="1 minute"/><xsd:attribute name="packagingData" type="xsd:boolean" use="optional" default="false"/><xsd:anyAttribute/></xsd:complexType><xsd:complexType name="ShutdownHook"><xsd:attribute name="class" type="xsd:string" use="optional"default="ch.qos.logback.core.hook.DelayingShutdownHook"/><xsd:anyAttribute/></xsd:complexType><xsd:complexType name="ConversionRule"><xsd:attribute name="conversionWord" type="xsd:string"/><xsd:attribute name="converterClass" type="xsd:string"/></xsd:complexType><xsd:complexType name="StatusListener"><xsd:attribute name="class" type="xsd:string" use="optional"/><xsd:anyAttribute/></xsd:complexType><xsd:complexType name="ContextListener"><xsd:choice maxOccurs="unbounded"><xsd:element name="resetJUL" type="xsd:boolean"/><xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/></xsd:choice><xsd:attribute name="class" type="xsd:string"/><xsd:anyAttribute/></xsd:complexType><xsd:complexType name="Include"><xsd:attribute name="file" use="optional" type="xsd:string"/><xsd:attribute name="resource" use="optional" type="xsd:string"/><xsd:attribute name="url" use="optional" type="xsd:string"/><xsd:attribute name="optional" use="optional" type="xsd:boolean"/></xsd:complexType><xsd:complexType name="Define"><xsd:sequence><xsd:any minOccurs="0" maxOccurs="unbounded"/></xsd:sequence><xsd:anyAttribute/></xsd:complexType><xsd:complexType name="Timestamp"><xsd:sequence><xsd:any minOccurs="0" maxOccurs="unbounded"/></xsd:sequence><xsd:attribute name="key" type="xsd:string" use="optional"/><xsd:attribute name="datePattern" type="xsd:string" use="optional"/><xsd:attribute name="timeReference" type="xsd:string" use="optional"/><xsd:anyAttribute/></xsd:complexType><xsd:complexType name="RollingPolicy"><xsd:choice maxOccurs="unbounded"><xsd:element name="fileNamePattern" minOccurs="1" maxOccurs="1" type="xsd:string"/><xsd:element name="maxHistory" minOccurs="0" maxOccurs="1" type="xsd:int"/><xsd:element name="minIndex" minOccurs="0" maxOccurs="1" type="xsd:int"/><xsd:element name="maxIndex" minOccurs="0" maxOccurs="1" type="xsd:int"/><xsd:element name="timeBasedFileNamingAndTriggeringPolicy" minOccurs="0" maxOccurs="1" type="TriggeringPolicy"/><xsd:element name="cleanHistoryOnStart" minOccurs="0" maxOccurs="1" type="xsd:boolean"/><xsd:element name="maxFileSize" minOccurs="0" maxOccurs="1" type="FileSize"/><xsd:element name="totalSizeCap" minOccurs="0" maxOccurs="1" type="FileSize"/></xsd:choice><xsd:attribute name="class" type="xsd:string" use="required"/></xsd:complexType><xsd:simpleType name="FileSize"><xsd:restriction base="xsd:string"><xsd:pattern value="[1-9][0-9]*(KB|MB|GB)?"/></xsd:restriction></xsd:simpleType><xsd:complexType name="TriggeringPolicy"><xsd:sequence><xsd:element name="maxFileSize" minOccurs="0" maxOccurs="1" type="FileSize"/></xsd:sequence><xsd:attribute name="class" type="xsd:string" use="required"/></xsd:complexType><xsd:complexType name="If"><xsd:choice maxOccurs="unbounded"><xsd:element type="Configuration" name="then"/><xsd:element type="Configuration" name="else"/><xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/></xsd:choice><xsd:attribute name="condition" type="xsd:string"/><xsd:anyAttribute/></xsd:complexType><xsd:complexType name="Property"><xsd:sequence><xsd:any minOccurs="0" maxOccurs="unbounded"/></xsd:sequence><xsd:attribute name="scope" type="xsd:string" use="optional"/><xsd:attribute name="name" type="xsd:string" use="optional"/><xsd:attribute name="value" type="xsd:string" use="optional"/><xsd:attribute name="file" type="xsd:string" use="optional"/><xsd:attribute name="resource" type="xsd:string" use="optional"/><xsd:anyAttribute/></xsd:complexType><xsd:complexType name="Appender"><xsd:choice maxOccurs="unbounded"><xsd:element name="target" minOccurs="0" maxOccurs="1" type="Target"/><xsd:element name="file" minOccurs="0" maxOccurs="1" type="xsd:string"/><xsd:element name="withJansi" minOccurs="0" maxOccurs="1" type="xsd:boolean"/><xsd:element name="encoder" minOccurs="0" maxOccurs="1" type="Encoder"/><xsd:element name="filter" minOccurs="0" maxOccurs="1" type="Filter"/><xsd:element name="append" minOccurs="0" maxOccurs="1" type="xsd:boolean"/><xsd:element name="prudent" minOccurs="0" maxOccurs="1" type="xsd:boolean"/><xsd:element name="layout" minOccurs="0" maxOccurs="1" type="Layout"/><xsd:element name="rollingPolicy" minOccurs="0" maxOccurs="1" type="RollingPolicy"/><xsd:element name="connectionSource" minOccurs="0" maxOccurs="1" type="ConnectionSource"/><xsd:element name="triggeringPolicy" minOccurs="0" maxOccurs="1" type="TriggeringPolicy"/><xsd:element name="appender-ref" minOccurs="0" maxOccurs="1" type="AppenderRef"/><xsd:any namespace="##other" processContents="skip" minOccurs="0" maxOccurs="unbounded"/></xsd:choice><xsd:attribute name="name" type="xsd:string" use="required"/><xsd:attribute name="class" type="xsd:string" use="required"/><xsd:anyAttribute/></xsd:complexType><xsd:simpleType name="Target"><xsd:restriction base="xsd:string"><xsd:enumeration value="System.out"/><xsd:enumeration value="System.err"/></xsd:restriction></xsd:simpleType><xsd:complexType name="Filter"><xsd:choice maxOccurs="unbounded"><xsd:element name="level" minOccurs="0" maxOccurs="unbounded" type="LoggerLevel"/><xsd:element name="onMatch" minOccurs="0" maxOccurs="unbounded" type="MatchValue"/><xsd:element name="onMismatch" minOccurs="0" maxOccurs="unbounded" type="MatchValue"/><xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/></xsd:choice><xsd:attribute name="class" type="xsd:string" use="optional"/><xsd:anyAttribute/></xsd:complexType><xsd:simpleType name="MatchValue"><xsd:restriction base="xsd:string"><xsd:enumeration value="ACCEPT"/><xsd:enumeration value="DENY"/><xsd:enumeration value="NEUTRAL"/></xsd:restriction></xsd:simpleType><xsd:complexType name="Layout"><xsd:choice maxOccurs="unbounded"><xsd:element name="pattern" minOccurs="0" maxOccurs="1" type="xsd:string"/><xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/></xsd:choice><xsd:attribute name="class" type="xsd:string" use="optional"/><xsd:anyAttribute/></xsd:complexType><xsd:complexType name="Logger"><xsd:choice maxOccurs="unbounded"><xsd:element name="appender-ref" minOccurs="0" maxOccurs="unbounded" type="AppenderRef"/><xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/></xsd:choice><xsd:attribute name="name" type="xsd:string" use="required"/><xsd:attribute name="level" type="LoggerLevel" use="optional"/><xsd:attribute name="additivity" type="xsd:boolean" use="optional" default="true"/><xsd:anyAttribute/></xsd:complexType><xsd:complexType name="Encoder"><xsd:choice maxOccurs="unbounded"><xsd:element name="charset" type="xsd:string" minOccurs="0" maxOccurs="1"/><xsd:element name="immediateFlush" type="xsd:boolean" minOccurs="0" maxOccurs="1"/><xsd:element name="layout" minOccurs="0" maxOccurs="1" type="Layout"/><xsd:element name="outputPatternAsHeader" type="xsd:boolean" minOccurs="0" maxOccurs="1"/><xsd:element name="pattern" type="xsd:string" minOccurs="0" maxOccurs="1"/></xsd:choice><xsd:attribute name="class" type="xsd:string" use="optional"default="ch.qos.logback.classic.encoder.PatternLayoutEncoder"/></xsd:complexType><xsd:complexType name="Root"><xsd:sequence><xsd:element name="appender-ref" minOccurs="0" maxOccurs="unbounded" type="AppenderRef"/></xsd:sequence><xsd:attribute name="level" use="required" type="LoggerLevel"/><xsd:anyAttribute/></xsd:complexType><xsd:complexType name="AppenderRef"><xsd:attribute name="ref" type="xsd:string"/></xsd:complexType><xsd:simpleType name="LoggerLevel"><xsd:union><xsd:simpleType><xsd:restriction base="xsd:string"><xsd:enumeration value="OFF"/><xsd:enumeration value="off"/><xsd:enumeration value="ALL"/><xsd:enumeration value="all"/><xsd:enumeration value="INHERITED"/><xsd:enumeration value="inherited"/><xsd:enumeration value="NULL"/><xsd:enumeration value="null"/><xsd:enumeration value="ERROR"/><xsd:enumeration value="error"/><xsd:enumeration value="WARN"/><xsd:enumeration value="warn"/><xsd:enumeration value="INFO"/><xsd:enumeration value="info"/><xsd:enumeration value="DEBUG"/><xsd:enumeration value="debug"/><xsd:enumeration value="TRACE"/><xsd:enumeration value="trace"/></xsd:restriction></xsd:simpleType><xsd:simpleType><xsd:restriction base="xsd:string"><xsd:pattern value="($\{.+:-)?[Oo][Ff]{2}\}?"/><xsd:pattern value="($\{.+:-)?[Aa][Ll]{2}\}?"/><xsd:pattern value="($\{.+:-)?[Ii][Nn][Hh][Ee][Rr][Ii][Tt][Ee][Dd]\}?"/><xsd:pattern value="($\{.+:-)?[Nn][Uu][Ll]{2}\}?"/><xsd:pattern value="($\{.+:-)?[Ee][Rr]{2}[Oo][Rr]\}?"/><xsd:pattern value="($\{.+:-)?[Ww][Aa][Rr][Nn]\}?"/><xsd:pattern value="($\{.+:-)?[Ii][Nn][Ff][Oo]\}?"/><xsd:pattern value="($\{.+:-)?[Dd][Ee][Bb][Uu][Gg]\}?"/><xsd:pattern value="($\{.+:-)?[Tt][Rr][Aa][Cc][Ee]\}?"/><xsd:pattern value="\$\{.+\}"/></xsd:restriction></xsd:simpleType></xsd:union></xsd:simpleType><xsd:complexType name="JmxConfigurator"/><xsd:complexType name="ConnectionSource"><xsd:sequence><xsd:element name="driverClass" type="xsd:string"/><xsd:element name="url" type="xsd:string"/><xsd:element name="user" type="xsd:string"/><xsd:element name="password" type="xsd:string"/></xsd:sequence><xsd:attribute name="class" type="xsd:string" use="required"/></xsd:complexType></xsd:schema>

http://www.ppmy.cn/news/617446.html

相关文章

Linux ❀ Ubuntu开机报错 pciehp:cannot get irq -1 for the hotplug / unknown chipset

"pciehp: cannot get irq -1 for the hotplug" 错误信息表明 PCIe 热插拔&#xff08;hotplug&#xff09;模块无法获取正确的 IRQ&#xff08;中断请求&#xff09; 禁用 PCIe 热插拔&#xff1a;进入恢复模式或命令行模式&#xff0c;并 sudo nano /etc/default/gr…

游戏音乐存在的价值

游戏音乐是文化产业中兴起的数字音乐产业与热门电子游戏产业相碰撞而形成的数字音乐&#xff0c;游戏音乐在游戏中占据不可缺少的位置&#xff0c;今天我们来聊聊游戏音乐存在的价值。 一、游戏音乐能勾勒美好的回忆 87年日本科乐美公司发行的经典FC游戏《魂斗罗…

用 Python 写游戏有什么优势?

简单&#xff0c;简单&#xff0c;还是tm的简单 简单到什么程度&#xff0c;我带着我的小学生&#xff0c;几乎能使用python复刻所有的2D游戏 先看看&#xff0c;我们写过的游戏 上面机会覆盖所有80、90后童年的游戏 意味着现在孩子的童年都能写出家长沉迷的游戏当中 对此&…

真正的头号玩家——游戏AI

从雅达利游戏机到如今的手游&#xff0c;电子游戏已经走过了数十年的发展史&#xff0c;从青少年的“毒品”变成了社会主流的新娱乐。去年以来&#xff0c;《绝地求生》席卷了国内&#xff0c;似乎人人口中都念叨着“吃鸡”两个字。此后相关的手游也层出不穷&#xff0c;但玩家…

100个开源游戏

街机游戏 1、Andys Super Great Park 骑在过山车上&#xff0c;躲避障碍的同时收集气球。游戏有25关&#xff0c;另外还有18关需要得到高分才能解锁。支持的操作系统&#xff1a;Windows,Linux,Android。 2、Armagetron Advanced 这是Tron的3D克隆版。在游戏中&#xff0c;你需…

一个自律的产品经理,如何抵抗游戏的吸引力?

游戏&#xff0c;真好玩。 一个时代有一个时代的代表。从掌机俄罗斯方块到游戏机的魂斗罗&#xff0c;从单机的红警CS到MMORPG的魔兽世界&#xff0c;从MOBA的英雄联盟到称霸的王者荣耀。 一个时代有一个时代的发展。游戏群体一路过关斩将&#xff0c;从最初的网瘾少年到现在全…

浅析目前网络游戏音乐概况

随着网络技术和计算机技术的迅速发展&#xff0c;网络小说、网络游戏等网络文化成为人们生活中的重要组成部分。尤其是网络游戏&#xff0c;近几年如同雨后春笋般层出不穷&#xff0c;同时游戏音乐也随之成为一个不可忽视的主体。游戏音乐一直处于被忽视的地位&#xff0c;粗制…

用Python制作十款经典的童年游戏(不会吧不会吧,不会真有人没玩过吧)

不知道大家童年是怎么度过的&#xff0c;黑羽的童年是在游戏世界里度过。这里黑羽分享一下十个python可以制作的经典游戏&#xff0c;看看有没有你的菜。 对了以下游戏皆是小学六年级的代码水平~~~ 如有不适&#xff0c;赶快学习 1、小鸟管道 使用模块&#xff1a;pygame代码长…