fix: lucene打印配置

This commit is contained in:
2024-08-07 20:04:22 +08:00
parent d3f5aa4f19
commit fcbe8c92ed
11 changed files with 192 additions and 496 deletions

View File

@@ -1,187 +0,0 @@
package org.nl.config.lucene;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.io.FileUtils;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.springframework.beans.factory.annotation.Value;
import org.wltea.analyzer.lucene.IKAnalyzer;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.nio.file.Paths;
import java.util.Set;
/**
* <p>
* lucene索引器
* </p>
*
* @author generator
* @since 2023-11-16
*/
public class Indexer {
/**
* 写索引实例
*/
private IndexWriter writer;
public IndexWriter getWriter() {
return writer;
}
/**
* 构造方法实例化IndexWriter
*
* @param indexDir
* @throws Exception
*/
public Indexer(String indexDir) throws Exception {
Directory dir = FSDirectory.open(Paths.get(indexDir));
//标准分词器会自动去掉空格啊is a the等单词
// Analyzer analyzer = new StandardAnalyzer();
Analyzer analyzer = new IKAnalyzer();
//将标准分词器配到写索引的配置中
IndexWriterConfig config = new IndexWriterConfig(analyzer);
//实例化写索引对象
writer = new IndexWriter(dir, config);
}
/**
* 索引指定目录下的所有文件
*
* @param dataDir
* @return
* @throws Exception
*/
public int indexAll(String dataDir) throws Exception {
// 获取该路径下的所有文件
File[] files = new File(dataDir).listFiles();
if (null != files) {
for (File file : files) {
//调用下面的indexFile方法对每个文件进行索引
indexFile(file);
}
}
//返回索引的文件数
return writer.numRamDocs();
}
/**
* 索引指定的文件
*
* @param file
* @throws Exception
*/
private void indexFile(File file) throws Exception {
System.out.println("索引文件的路径:" + file.getCanonicalPath());
//调用下面的getDocument方法获取该文件的document
Document doc = getDocument(file);
//添加索引文档
//Document doc = json2Doc(jsonDoc);
// Document doc = new Document();
Field fieldContent = new TextField("fieldContent", FileUtils.readFileToString(null, "UTF-8"), Field.Store.YES);
//将doc添加到索引中
writer.addDocument(doc);
}
/**
* 获取文档,文档里再设置每个字段,就类似于数据库中的一行记录
*
* @param file
* @return
* @throws Exception
*/
private Document getDocument(File file) throws Exception {
Document doc = new Document();
//开始添加字段
//添加内容
doc.add(new TextField("contents", new FileReader(file)));
//添加文件名,并把这个字段存到索引文件里
doc.add(new TextField("fileName", file.getName(), Field.Store.YES));
//添加文件路径
doc.add(new TextField("fullPath", file.getCanonicalPath(), Field.Store.YES));
return doc;
}
public Document json2Doc(String strDoc) {
Document doc = new Document();
JSONObject jsonDoc = JSONObject.parseObject(strDoc);
Set<String> keys = jsonDoc.keySet();
for (String key : keys) {
doc.add(new TextField(key, jsonDoc.getString(key), Field.Store.YES));
}
return doc;
}
public void addLogIndex(String msg) throws IOException {
//步骤一创建Directory对象用于指定索引库的位置 RAMDirectory内存
Directory directory = FSDirectory.open(new File("D:\\lucene\\index").toPath());
//步骤二创建一个IndexWriter对象用于写索引
// Analyzer analyzer = new StandardAnalyzer();
IndexWriter indexWriter = new IndexWriter(directory, new IndexWriterConfig(new IKAnalyzer(false)));
// indexWriter.deleteAll();//清理所有索引库
// IndexWriter indexWriter=new IndexWriter(directory,new IndexWriterConfig(new StandardAnalyzer()));
//记录索引开始时间
long startTime = System.currentTimeMillis();
//步骤三:读取磁盘中文件,对应每一个文件创建一个文档对象
Document document = new Document();
document.add(new TextField("fieldContent", msg, Field.Store.YES));
indexWriter.addDocument(document);
//记录索引结束时间
long endTime = System.currentTimeMillis();
System.out.println("建立索引" + "共耗时" + (endTime - startTime) + "毫秒");
indexWriter.commit();
//步骤八:关闭资源
indexWriter.close();
System.out.println("建立索引成功-----关闭资源");
}
/**
* 系统的日志文件路径
*/
@Value("${logging.file.path}")
private String logUrl;
public static void main(String[] args) throws IOException {
//步骤一创建Directory对象用于指定索引库的位置 RAMDirectory内存
Directory directory = FSDirectory.open(new File("D:\\lucene\\index").toPath());
//步骤二创建一个IndexWriter对象用于写索引
// Analyzer analyzer = new StandardAnalyzer();
IndexWriter indexWriter = new IndexWriter(directory, new IndexWriterConfig(new IKAnalyzer(false)));
indexWriter.deleteAll();//清理所有索引库
// indexWriter=new IndexWriter(directory,new IndexWriterConfig(new StandardAnalyzer()));
//记录索引开始时间
long startTime = System.currentTimeMillis();
//步骤三:读取磁盘中文件,对应每一个文件创建一个文档对象
File file = new File("D:\\testlog");
//步骤四:获取文件列表
File[] files = file.listFiles();
for (File item : files) {
BufferedReader bufferedReader = new BufferedReader(new FileReader(item));
String strLine = null;
while (null != (strLine = bufferedReader.readLine())) {
Document document = new Document();
document.add(new TextField("fieldContent", strLine, Field.Store.YES));
indexWriter.addDocument(document);
}
}
//记录索引结束时间
long endTime = System.currentTimeMillis();
System.out.println("建立索引" + "共耗时" + (endTime - startTime) + "毫秒");
indexWriter.commit();
//步骤八:关闭资源
indexWriter.close();
System.out.println("建立索引成功-----关闭资源");
}
}

View File

@@ -16,7 +16,9 @@ import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.nl.common.utils.YmlConfigFileUtil;
import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.wltea.analyzer.lucene.IKAnalyzer;
import java.io.IOException;
@@ -30,7 +32,7 @@ import java.util.regex.Pattern;
public class LuceneAppender extends AppenderBase<ILoggingEvent> {
private Directory index;
private static Directory index;
public static IndexWriter indexWriter;
@@ -38,24 +40,25 @@ public class LuceneAppender extends AppenderBase<ILoggingEvent> {
public void start() {
super.start();
try {
// 读取配置文件
Properties properties = YmlConfigFileUtil.readConfig("config/application.yml");
// 获取配置值
String luceneDir = properties.getProperty("lucene.index.path");
index = FSDirectory.open(Paths.get(luceneDir));
} catch (IOException e) {
init();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void init() throws IOException {
Resource resource = new ClassPathResource("config/application.yml");
YamlPropertiesFactoryBean yamlPropertiesFactoryBean = new YamlPropertiesFactoryBean();
yamlPropertiesFactoryBean.setResources(resource);
Properties properties = yamlPropertiesFactoryBean.getObject();
// 获取配置值
String luceneDir = properties.getProperty("lucene.index.path");
System.out.println("---index地址----" + luceneDir);
index = FSDirectory.open(Paths.get(luceneDir));
// 初始化 Lucene 索引
Analyzer analyzer = new IKAnalyzer();
IndexWriterConfig config = new IndexWriterConfig(analyzer);
try {
indexWriter = new IndexWriter(index, config);
} catch (IOException e) {
e.printStackTrace();
}
indexWriter = new IndexWriter(index, config);
}

View File

@@ -1,70 +0,0 @@
package org.nl.config.lucene;
import cn.hutool.core.date.DateUtil;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.wltea.analyzer.lucene.IKAnalyzer;
import java.io.File;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* <p>
* 、
* </p>
*
* @author generator
* @since 2023-11-16
*/
public class LuceneIndexWriter {
private static IndexWriter indexWriter;
static {
try {
Directory directory = FSDirectory.open(new File(UrlConfig.luceneUrl).toPath());
IndexWriterConfig config = new IndexWriterConfig(new IKAnalyzer());
indexWriter = new IndexWriter(directory, config);
} catch (Exception e) {
e.printStackTrace();
}
/**当当前线程结束时自动关闭IndexWriter使用Runtime对象*/
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
try {
closeIndexWriter();
} catch (Exception e) {
e.printStackTrace();
}
}));
}
/**在线程结束时自动关闭IndexWriter*/
public static IndexWriter getIndexWriter() {
return indexWriter;
}
/**关闭IndexWriter
* @throws IOException
* @throws CorruptIndexException */
public static void closeIndexWriter() throws Exception {
if(indexWriter != null) {
indexWriter.close();
}
}
public static void main(String[] args) throws IOException {
indexWriter.deleteAll();
}
public static String getDate(String timeString) throws ParseException {
//时间格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX");
Date date = sdf.parse(timeString);
//格式化后的时间
timeString = DateUtil.format(date, "yyyy-MM-dd HH:mm:ss.SSS");
return timeString;
}
}

View File

@@ -95,6 +95,7 @@ public class Searcher {
whereJson.get(LogMessageConstant.FIELD_LEVEL).toString()));
booleanQueryBuilder.add(termQuery, BooleanClause.Occur.MUST);
}
// 使用实体接收
List<String> list = new ArrayList<>();
TopFieldCollector collector = TopFieldCollector.create(sort, 20000, 0);
searcher.search(booleanQueryBuilder.build(), collector);

View File

@@ -1,48 +1,48 @@
package org.nl.system.service.lucene;
import org.nl.system.service.lucene.dto.LuceneLogDto;
import java.io.IOException;
/**
* <p>
* 日志检索服务
* </p>
*
* @author generator
* @since 2023-11-16
*/
public interface LuceneExecuteLogService {
/**
* 设备光电变化实时光电信号
*
* @param device_code 设备编号
* @param key plc信号
* @param value plc信号值
*/
void deviceItemValue(String device_code, String key, String value);
/**
* 设备执行日志,会保留历史记录
*
* @param luceneLogDto 日志结果对象
*/
void deviceExecuteLog(LuceneLogDto luceneLogDto);
/**
* 接口日志,会保留历史记录
* @param luceneLogDto 日志结果对象
* @throws IOException
*/
void interfaceExecuteLog(LuceneLogDto luceneLogDto) throws IOException;
/**
* 设备执行日志,会保留历史记录
*
* @param name 日志名称
* @param message 日志信息
*/
void extLog(String name, String message);
}
//package org.nl.system.service.lucene;
//
//import org.nl.system.service.lucene.dto.LuceneLogDto;
//
//import java.io.IOException;
//
///**
// * <p>
// * 日志检索服务
// * </p>
// *
// * @author generator
// * @since 2023-11-16
// */
//public interface LuceneExecuteLogService {
// /**
// * 设备光电变化实时光电信号
// *
// * @param device_code 设备编号
// * @param key plc信号
// * @param value plc信号值
// */
// void deviceItemValue(String device_code, String key, String value);
//
// /**
// * 设备执行日志,会保留历史记录
// *
// * @param luceneLogDto 日志结果对象
// */
// void deviceExecuteLog(LuceneLogDto luceneLogDto);
//
// /**
// * 接口日志,会保留历史记录
// * @param luceneLogDto 日志结果对象
// * @throws IOException
// */
// void interfaceExecuteLog(LuceneLogDto luceneLogDto) throws IOException;
//
// /**
// * 设备执行日志,会保留历史记录
// *
// * @param name 日志名称
// * @param message 日志信息
// */
// void extLog(String name, String message);
//
//
//}

View File

@@ -1,111 +1,111 @@
package org.nl.system.service.lucene.impl;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.StringField;
import org.apache.lucene.index.IndexWriter;
import org.nl.common.enums.LogTypeEnum;
import org.nl.config.lucene.DynamicLogger;
import org.nl.config.lucene.LuceneIndexWriter;
import org.nl.system.service.lucene.LuceneExecuteLogService;
import org.nl.system.service.lucene.dto.LuceneLogDto;
import org.slf4j.Logger;
import org.slf4j.MDC;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.io.IOException;
/**
* @author jlm
* @description 服务实现
* @date 2023-04-11
*/
@Service
@RequiredArgsConstructor
@Slf4j
public class LuceneExecuteLogServiceImpl implements LuceneExecuteLogService {
/**
* 日志目录
*/
@Value("${logging.file.path}")
private String logPath;
@Override
public void deviceItemValue(String device_code, String key, String value) {
String now = DateUtil.now();
}
@SneakyThrows
@Override
public void deviceExecuteLog(LuceneLogDto luceneLogDto) {
luceneLogDto.setLogType(LogTypeEnum.DEVICE_LOG.getDesc());
addIndex(luceneLogDto);
}
@Override
public void interfaceExecuteLog(LuceneLogDto luceneLogDto) throws IOException {
luceneLogDto.setLogType(LogTypeEnum.INTERFACE_LOG.getDesc());
addIndex(luceneLogDto);
}
private void addIndex(LuceneLogDto luceneLogDto) throws IOException {
IndexWriter indexWriter = LuceneIndexWriter.getIndexWriter();
//创建一个Document对象
Document document = new Document();
try {
//记录索引开始时间
long startTime = System.currentTimeMillis();
//向document对象中添加域。
if (ObjectUtil.isNotEmpty(luceneLogDto.getDevice_code())) {
document.add(new StringField("device_code", luceneLogDto.getDevice_code(), Field.Store.YES));
}
if (ObjectUtil.isNotEmpty(luceneLogDto.getContent())) {
document.add(new StringField("fieldContent", luceneLogDto.getContent(), Field.Store.YES));
}
if (ObjectUtil.isNotEmpty(luceneLogDto.getMethod())) {
document.add(new StringField("method", luceneLogDto.getMethod(), Field.Store.YES));
}
if (ObjectUtil.isNotEmpty(luceneLogDto.getStatus_code())) {
document.add(new StringField("status_code", luceneLogDto.getStatus_code(), Field.Store.YES));
}
if (ObjectUtil.isNotEmpty(luceneLogDto.getRequestparam())) {
document.add(new StringField("requestparam", luceneLogDto.getRequestparam(), Field.Store.YES));
}
if (ObjectUtil.isNotEmpty(luceneLogDto.getResponseparam())) {
document.add(new StringField("responseparam", luceneLogDto.getResponseparam(), Field.Store.YES));
}
document.add(new StringField("logType", luceneLogDto.getLogType(), Field.Store.YES));
document.add(new StringField("logTime", DateUtil.format(new DateTime(), "yyyy-MM-dd HH:mm:ss.SSS"), Field.Store.YES));
indexWriter.addDocument(document);
//记录索引结束时间
long endTime = System.currentTimeMillis();
indexWriter.commit();
//实现日志文件按业务独立生成日志文件到指定路径
DynamicLogger loggerBuilder =new DynamicLogger(logPath+"\\"+luceneLogDto.getLogType()+"\\");
Logger logger = loggerBuilder.getLogger(luceneLogDto.getDevice_code());
logger.info("{}",luceneLogDto.toString());
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
@Override
public void extLog(String name, String message) {
try {
MDC.put(name, name);
log.info("{}", message);
} catch (Exception e) {
e.printStackTrace();
} finally {
MDC.remove(name);
}
}
}
//package org.nl.system.service.lucene.impl;
//
//import cn.hutool.core.date.DateTime;
//import cn.hutool.core.date.DateUtil;
//import cn.hutool.core.util.ObjectUtil;
//import lombok.RequiredArgsConstructor;
//import lombok.SneakyThrows;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.lucene.document.Document;
//import org.apache.lucene.document.Field;
//import org.apache.lucene.document.StringField;
//import org.apache.lucene.index.IndexWriter;
//import org.nl.common.enums.LogTypeEnum;
//import org.nl.config.lucene.DynamicLogger;
//import org.nl.config.lucene.LuceneIndexWriter;
//import org.nl.system.service.lucene.LuceneExecuteLogService;
//import org.nl.system.service.lucene.dto.LuceneLogDto;
//import org.slf4j.Logger;
//import org.slf4j.MDC;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.stereotype.Service;
//
//import java.io.IOException;
//
///**
// * @author jlm
// * @description 服务实现
// * @date 2023-04-11
// */
//@Service
//@RequiredArgsConstructor
//@Slf4j
//public class LuceneExecuteLogServiceImpl implements LuceneExecuteLogService {
//
// /**
// * 日志目录
// */
// @Value("${logging.file.path}")
// private String logPath;
//
// @Override
// public void deviceItemValue(String device_code, String key, String value) {
// String now = DateUtil.now();
// }
//
// @SneakyThrows
// @Override
// public void deviceExecuteLog(LuceneLogDto luceneLogDto) {
// luceneLogDto.setLogType(LogTypeEnum.DEVICE_LOG.getDesc());
// addIndex(luceneLogDto);
// }
//
// @Override
// public void interfaceExecuteLog(LuceneLogDto luceneLogDto) throws IOException {
// luceneLogDto.setLogType(LogTypeEnum.INTERFACE_LOG.getDesc());
// addIndex(luceneLogDto);
// }
//
// private void addIndex(LuceneLogDto luceneLogDto) throws IOException {
// IndexWriter indexWriter = LuceneIndexWriter.getIndexWriter();
// //创建一个Document对象
// Document document = new Document();
// try {
// //记录索引开始时间
// long startTime = System.currentTimeMillis();
// //向document对象中添加域。
// if (ObjectUtil.isNotEmpty(luceneLogDto.getDevice_code())) {
// document.add(new StringField("device_code", luceneLogDto.getDevice_code(), Field.Store.YES));
// }
// if (ObjectUtil.isNotEmpty(luceneLogDto.getContent())) {
// document.add(new StringField("fieldContent", luceneLogDto.getContent(), Field.Store.YES));
// }
// if (ObjectUtil.isNotEmpty(luceneLogDto.getMethod())) {
// document.add(new StringField("method", luceneLogDto.getMethod(), Field.Store.YES));
// }
// if (ObjectUtil.isNotEmpty(luceneLogDto.getStatus_code())) {
// document.add(new StringField("status_code", luceneLogDto.getStatus_code(), Field.Store.YES));
// }
// if (ObjectUtil.isNotEmpty(luceneLogDto.getRequestparam())) {
// document.add(new StringField("requestparam", luceneLogDto.getRequestparam(), Field.Store.YES));
// }
// if (ObjectUtil.isNotEmpty(luceneLogDto.getResponseparam())) {
// document.add(new StringField("responseparam", luceneLogDto.getResponseparam(), Field.Store.YES));
// }
// document.add(new StringField("logType", luceneLogDto.getLogType(), Field.Store.YES));
// document.add(new StringField("logTime", DateUtil.format(new DateTime(), "yyyy-MM-dd HH:mm:ss.SSS"), Field.Store.YES));
// indexWriter.addDocument(document);
// //记录索引结束时间
// long endTime = System.currentTimeMillis();
// indexWriter.commit();
// //实现日志文件按业务独立生成日志文件到指定路径
// DynamicLogger loggerBuilder =new DynamicLogger(logPath+"\\"+luceneLogDto.getLogType()+"\\");
// Logger logger = loggerBuilder.getLogger(luceneLogDto.getDevice_code());
// logger.info("{}",luceneLogDto.toString());
// } catch (Exception e) {
// log.error(e.getMessage(), e);
// }
// }
//
// @Override
// public void extLog(String name, String message) {
// try {
// MDC.put(name, name);
// log.info("{}", message);
// } catch (Exception e) {
// e.printStackTrace();
// } finally {
// MDC.remove(name);
// }
// }
//}

View File

@@ -21,7 +21,6 @@ import org.nl.config.IdUtil;
import org.nl.config.language.LangProcess;
import org.nl.system.service.dict.dao.Dict;
import org.nl.system.service.dict.dao.mapper.SysDictMapper;
import org.nl.system.service.lucene.LuceneExecuteLogService;
import org.nl.system.service.menu.dto.MenuDto;
import org.nl.system.service.menu.ISysMenuService;
import org.nl.system.service.menu.dao.SysMenu;
@@ -54,9 +53,6 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
@Autowired
private SysDictMapper sysDictMapper;
@Autowired
private LuceneExecuteLogService luceneExecuteLogService;
@Override
public List<MenuDto> queryAll(Map<String, Object> param) {
// 父节点标识

View File

@@ -14,23 +14,5 @@ nl:
port: 6379
password: null
database: 1
oracle:
ip: 172.27.37.66
port: 1521
scheme: RTMES
username: LMSTELCOM
password: LMSTELCOM_6463
sqlserver:
ip: 10.93.41.2
port: WINCC
username: sa
password: 123
database: 马钢_RH
dm:
ip: localhost
port: 5236
scheme: NLADMIN
username: NLADMIN
password: 123456789
logging-path: C:\log\wms
dynamic-log-path: C:\log\lms

View File

@@ -14,17 +14,5 @@ nl:
port: 6379
password: null
database: 1
oracle:
ip: 172.27.37.66
port: 1521
scheme: RTMES
username: LMSTELCOM
password: LMSTELCOM_6463
sqlserver:
ip: 10.93.41.2
port: WINCC
username: sa
password: 123
database: 马钢_RH
logging-path: C:\log\wms
dynamic-log-path: C:\log\lms

View File

@@ -4,7 +4,7 @@ server:
relaxed-path-chars: [ '|','{','}','[',']' ] #字符问题: https://blog.csdn.net/weixin_41996632/article/details/90715118
lucene:
index:
path: D:\lucene\index
path: D:\lucene2\index
spring:
profiles:
active: dev
@@ -61,24 +61,6 @@ spring:
username: ${DB_USER:${nl.config.mysql.username}}
password: ${DB_PWD:${nl.config.mysql.password}}
type: com.alibaba.druid.pool.DruidDataSource
oracle:
driver-class-name: oracle.jdbc.OracleDriver
url: jdbc:oracle:thin:@${nl.config.oracle.ip}:${nl.config.oracle.port}:${nl.config.oracle.scheme}
username: ${DB_USER:${nl.config.oracle.username}}
password: ${DB_PWD:${nl.config.oracle.password}}
type: com.alibaba.druid.pool.DruidDataSource
sqlserver:
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
url: jdbc:sqlserver://${nl.config.sqlserver.ip}\${nl.config.sqlserver.port};DatabaseName=${nl.config.sqlserver.database}
username: ${DB_USER:${nl.config.sqlserver.username}}
password: ${DB_PWD:${nl.config.sqlserver.password}}
type: com.alibaba.druid.pool.DruidDataSource
dm:
driver-class-name: dm.jdbc.driver.DmDriver
url: jdbc:dm://${nl.config.dm.ip}:${nl.config.dm.port}/${nl.config.dm.scheme}?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8
username: ${nl.config.dm.username}
password: ${nl.config.dm.password}
type: com.alibaba.druid.pool.DruidDataSource
druid:
filters:
DruidFilter,stat
@@ -86,18 +68,6 @@ spring:
min-idle: 15 #最小连接池数量
maxActive: 30 #最大连接池数量
maxWait: 3000 #获取连接时最大等待时间,单位毫秒
#申请连接的时候检测如果空闲时间大于timeBetweenEvictionRunsMillis执行validationQuery检测连接是否有效。
test-while-idle: true
time-between-eviction-runs-millis: 300000 #既作为检测的间隔时间又作为test-while-idle执行的依据
min-evictable-idle-time-millis: 900000 #销毁线程时检测当前连接的最后活动时间和当前时间差大于该值时,关闭当前连接
#用来检测连接是否有效的sql
#mysql中为 select 'x'
#oracle中为 select 1 from dual
validation-query: SELECT 'x'
test-on-borrow: true #申请连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为true
test-on-return: false #归还连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为true
pool-prepared-statements: true #是否缓存preparedStatement,mysql5.5+建议开启
max-pool-prepared-statement-per-connection-size: 20 #当值大于20时poolPreparedStatements会自动修改为true
flyway:
#开启
enabled: false

View File

@@ -49,8 +49,21 @@ https://juejin.cn/post/6844903775631572999
</appender>
<appender name="luceneAppender" class="org.nl.config.lucene.LuceneAppender" >
<!-- Filter for INFO level -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>NEXT</onMismatch>
</filter>
<!-- Filter for WARN level -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>NEXT</onMismatch>
</filter>
<!-- Filter for ERROR level -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>