Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
email
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
陈天仲
email
Commits
107746a6
Commit
107746a6
authored
Sep 20, 2023
by
chentianzhong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
已读关闭代办,外网数据回内网显示问题
parent
aeb05cca
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
205 additions
and
223 deletions
+205
-223
pom.xml
+1
-1
src/main/java/com/zq/email/config/MyThreadPoolTaskExecutor.java
+49
-49
src/main/java/com/zq/email/controller/EmailController.java
+4
-0
src/main/java/com/zq/email/service/impl/EmailAttachServiceImpl.java
+4
-0
src/main/java/com/zq/email/service/impl/EmailPersonServiceImpl.java
+4
-17
src/main/java/com/zq/email/utils/MsgUtil.java
+17
-9
src/main/resources/logback-spring.xml
+125
-145
src/main/resources/mapper/EmailPersonMapper.xml
+1
-2
No files found.
pom.xml
View file @
107746a6
...
...
@@ -25,7 +25,7 @@
<dependency>
<groupId>
com.zq
</groupId>
<artifactId>
oa-common-client
</artifactId>
<version>
1.2.
7
</version>
<version>
1.2.
9
</version>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
...
...
src/main/java/com/zq/email/config/MyThreadPoolTaskExecutor.java
View file @
107746a6
package
com
.
zq
.
email
.
config
;
import
org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor
;
import
org.springframework.web.context.request.RequestAttributes
;
import
org.springframework.web.context.request.RequestContextHolder
;
import
java.util.concurrent.Callable
;
import
java.util.concurrent.Future
;
/**
* 解决异步丢失请求信息
*
* @author wilmiam
* @since 2022/12/10 16:23
*/
public
class
MyThreadPoolTaskExecutor
extends
ThreadPoolTaskExecutor
{
public
MyThreadPoolTaskExecutor
()
{
super
();
}
@Override
public
void
execute
(
Runnable
task
)
{
RequestAttributes
requestAttributes
=
RequestContextHolder
.
getRequestAttributes
();
super
.
execute
(()
->
{
RequestContextHolder
.
setRequestAttributes
(
requestAttributes
);
task
.
run
();
});
}
@Override
public
<
T
>
Future
<
T
>
submit
(
Callable
<
T
>
task
)
{
RequestAttributes
requestAttributes
=
RequestContextHolder
.
getRequestAttributes
();
return
super
.
submit
(()
->
{
RequestContextHolder
.
setRequestAttributes
(
requestAttributes
);
return
task
.
call
();
});
}
@Override
public
Future
<?>
submit
(
Runnable
task
)
{
RequestAttributes
requestAttributes
=
RequestContextHolder
.
getRequestAttributes
();
return
super
.
submit
(()
->
{
RequestContextHolder
.
setRequestAttributes
(
requestAttributes
);
task
.
run
();
});
}
}
//
package com.zq.email.config;
//
//
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
//
import org.springframework.web.context.request.RequestAttributes;
//
import org.springframework.web.context.request.RequestContextHolder;
//
//
import java.util.concurrent.Callable;
//
import java.util.concurrent.Future;
//
/
//
**
//
* 解决异步丢失请求信息
//
*
//
* @author wilmiam
//
* @since 2022/12/10 16:23
//
*/
//
public class MyThreadPoolTaskExecutor extends ThreadPoolTaskExecutor {
//
//
public MyThreadPoolTaskExecutor() {
//
super();
//
}
//
//
@Override
//
public void execute(Runnable task) {
//
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
//
super.execute(() -> {
//
RequestContextHolder.setRequestAttributes(requestAttributes);
//
task.run();
//
});
//
}
//
//
@Override
//
public <T> Future<T> submit(Callable<T> task) {
//
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
//
return super.submit(() -> {
//
RequestContextHolder.setRequestAttributes(requestAttributes);
//
return task.call();
//
});
//
}
//
//
@Override
//
public Future<?> submit(Runnable task) {
//
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
//
return super.submit(() -> {
//
RequestContextHolder.setRequestAttributes(requestAttributes);
//
task.run();
//
});
//
}
//
//
}
src/main/java/com/zq/email/controller/EmailController.java
View file @
107746a6
...
...
@@ -2,6 +2,7 @@ package com.zq.email.controller;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.zq.common.utils.AssertUtils
;
import
com.zq.common.utils.TokenUtils
;
import
com.zq.common.vo.OnlineUserDto
;
...
...
@@ -104,6 +105,9 @@ public class EmailController {
AssertUtils
.
notNull
(
content
,
"邮件内容读取失败"
);
EmailPerson
emailPerson
=
emailPersonService
.
getByContentAndFolderId
(
content
.
getId
(),
content
.
getSendTime
(),
vo
.
getFolderId
());
emailPerson
.
setEmailContent
(
content
);
// if (emailPerson.getIsRead().equals(WhetherEnum.NO.getKey())) {
// msgUtil.doneMsgByBusinessIdAndReceiverId(person.getEmailContentId(), person.getUserId());
// }
return
ResultVo
.
success
(
emailPerson
);
}
...
...
src/main/java/com/zq/email/service/impl/EmailAttachServiceImpl.java
View file @
107746a6
...
...
@@ -136,6 +136,8 @@ public class EmailAttachServiceImpl extends ServiceImpl<EmailAttachMapper, Email
}
else
{
if
(
profile
.
contains
(
"wan"
))
{
download
=
download
.
replaceAll
(
"147.2.3.3"
,
"172.28.1.71"
);
}
else
{
download
=
download
.
replaceAll
(
"172.28.1.71"
,
"147.2.3.3"
);
}
}
return
download
;
...
...
@@ -157,6 +159,8 @@ public class EmailAttachServiceImpl extends ServiceImpl<EmailAttachMapper, Email
}
else
{
if
(
profile
.
equals
(
"wanpro"
)
||
profile
.
equals
(
"wantest"
))
{
download
=
download
.
replaceAll
(
"147.2.3.3"
,
"172.28.1.71"
);
}
else
{
download
=
download
.
replaceAll
(
"172.28.1.71"
,
"147.2.3.3"
);
}
}
return
download
;
...
...
src/main/java/com/zq/email/service/impl/EmailPersonServiceImpl.java
View file @
107746a6
...
...
@@ -426,23 +426,8 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
List
<
Long
>
ids
=
personList
.
stream
().
map
(
EmailPerson:
:
getId
).
collect
(
Collectors
.
toList
());
for
(
EmailPerson
person
:
personList
)
{
if
(
vo
.
getIsRead
().
equals
(
WhetherEnum
.
YES
.
getKey
()))
{
msgUtil
.
doneMsgByBusinessIdAndReceiverId
(
person
.
getEmailContentId
(),
person
.
getUserId
());
}
// else{
// //获取代办前端路径
// ResultVo<SystemInfo> bySystemTag = this.adminFeignClient.getBySystemTag(EmailConstant.SYSTEM_TAG);
// AssertUtils.isTrue(bySystemTag.isSuccess(), "调用admin服务,获取业务系统异常");
// SystemInfo systemInfo = bySystemTag.getData();
// AssertUtils.notNull(systemInfo, "调用admin服务异常,获取业务系统为空");
//
// EmailContent content = this.emailContentService.getById(person.getId());
//
// List<Long> receiverList = new ArrayList<>();
// receiverList.add(person.getUserId());
// msgUtil.sendMsg2(adminContext.getNickName(), content, receiverList, systemInfo, EmailFolderEnum.FOLDER_INBOX.getKey());
// }
}
this
.
lambdaUpdate
().
in
(
EmailPerson:
:
getId
,
ids
)
.
set
(
EmailPerson:
:
getIsRead
,
vo
.
getIsRead
()).
update
();
...
...
@@ -749,6 +734,7 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
vo
.
setIsPerson
(
WhetherEnum
.
YES
.
getKey
());
vo
.
setIsSend
(
WhetherEnum
.
NO
.
getKey
());
vo
.
setUserId
(
adminContext
.
getUserId
());
vo
.
setSendUserId
(
null
);
break
;
case
FOLDER_ALREADY_SEND:
//已发送
...
...
@@ -780,6 +766,7 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
}
}
Page
<
EmailPerson
>
page
=
new
Page
<>(
vo
.
getPage
(),
vo
.
getSize
());
page
.
setSearchCount
(
false
).
setOptimizeCountSql
(
false
);
page
=
this
.
baseMapper
.
selectSearchPage
(
page
,
vo
);
if
(
page
!=
null
&&
page
.
getRecords
()!=
null
){
for
(
EmailPerson
person
:
page
.
getRecords
())
{
...
...
@@ -798,9 +785,9 @@ public class EmailPersonServiceImpl extends ServiceImpl<EmailPersonMapper, Email
if
(
profile
.
contains
(
"wan"
))
{
// content.setSendUserPhoto(StrUtil.isNotBlank(data.getPhoto())?data.getPhoto()
// .replace("http://147.1.3.87", "http://172.28.1.159:82"):data.getPhoto());
String
replace
=
data
.
getPhoto
()
String
replace
=
StrUtil
.
isNotBlank
(
data
.
getPhoto
())?
data
.
getPhoto
()
.
replace
(
"http://147.1.3.87"
,
"http://172.28.1.159:82"
)
.
replace
(
"http://147.2.3.3"
,
"http://172.28.1.71"
);
.
replace
(
"http://147.2.3.3"
,
"http://172.28.1.71"
)
:
""
;
content
.
setSendUserPhoto
(
replace
);
//userDto.setPhoto();
}
else
{
...
...
src/main/java/com/zq/email/utils/MsgUtil.java
View file @
107746a6
package
com
.
zq
.
email
.
utils
;
import
cn.hutool.core.collection.ListUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.zq.common.vo.CustomerUserVo
;
import
com.zq.common.vo.ResultVo
;
import
com.zq.email.constants.EmailConstant
;
import
com.zq.email.dto.SystemInfo
;
import
com.zq.email.dto.admin.UserDto
;
...
...
@@ -13,9 +15,7 @@ import org.springframework.scheduling.annotation.Async;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
...
...
@@ -35,13 +35,14 @@ public class MsgUtil {
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
params
.
put
(
"systemTag"
,
EmailConstant
.
SYSTEM_TAG
);
params
.
put
(
"sender"
,
sender
);
params
.
put
(
"senderId"
,
content
.
getSendUserId
());
params
.
put
(
"nickName"
,
sender
);
params
.
put
(
"title"
,
"您有一封新邮件提醒"
);
params
.
put
(
"content"
,
"请查收我的邮件!主题:"
+
content
.
getTitle
()+
"。"
);
params
.
put
(
"userIdList"
,
userVoList
.
stream
().
map
(
e
->
e
.
getId
()).
collect
(
Collectors
.
toList
()));
params
.
put
(
"businessId"
,
content
.
getId
());
params
.
put
(
"jumpUrl"
,
systemInfo
.
getHomeUrl
()
+
"/#/detail?folderId="
+
folderId
+
"&contentId="
+
content
.
getId
());
log
.
debug
(
"---发送内部消息打印内容: {}"
,
JSONUtil
.
toJsonStr
(
params
));
log
.
warn
(
"---发送内部消息打印内容: {}"
,
JSONUtil
.
toJsonStr
(
params
));
messageFeignClient
.
sendApi
(
params
);
messageFeignClient
.
addToDoApi
(
params
);
}
...
...
@@ -53,13 +54,14 @@ public class MsgUtil {
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
params
.
put
(
"systemTag"
,
EmailConstant
.
SYSTEM_TAG
);
params
.
put
(
"sender"
,
sender
);
params
.
put
(
"senderId"
,
content
.
getSendUserId
());
params
.
put
(
"nickName"
,
sender
);
params
.
put
(
"title"
,
"您有一封新邮件提醒"
);
params
.
put
(
"content"
,
"请查收我的邮件!主题:"
+
content
.
getTitle
()+
"。"
);
params
.
put
(
"userIdList"
,
userIds
);
params
.
put
(
"businessId"
,
content
.
getId
());
params
.
put
(
"jumpUrl"
,
systemInfo
.
getHomeUrl
()
+
"/#/detail?folderId="
+
folderId
+
"&contentId="
+
content
.
getId
());
log
.
debug
(
"---发送内部消息打印内容: {}"
,
JSONUtil
.
toJsonStr
(
params
));
log
.
warn
(
"---发送内部消息打印内容: {}"
,
JSONUtil
.
toJsonStr
(
params
));
messageFeignClient
.
sendApi
(
params
);
messageFeignClient
.
addToDoApi
(
params
);
}
...
...
@@ -71,7 +73,7 @@ public class MsgUtil {
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
params
.
put
(
"systemTag"
,
EmailConstant
.
SYSTEM_TAG
);
params
.
put
(
"businessId"
,
businessId
);
log
.
debug
(
"---撤回内部消息打印内容: {}"
,
JSONUtil
.
toJsonStr
(
params
));
log
.
warn
(
"---撤回内部消息打印内容: {}"
,
JSONUtil
.
toJsonStr
(
params
));
messageFeignClient
.
delMessageBySystem
(
params
);
messageFeignClient
.
delTodoMessageBySystem
(
params
);
}
...
...
@@ -85,7 +87,7 @@ public class MsgUtil {
params
.
put
(
"businessId"
,
businessId
);
params
.
put
(
"receiverId"
,
receiverId
);
params
.
put
(
"todoUserId"
,
receiverId
);
log
.
debug
(
"---撤回内部消息打印内容: {}"
,
JSONUtil
.
toJsonStr
(
params
));
log
.
warn
(
"---撤回内部消息打印内容: {}"
,
JSONUtil
.
toJsonStr
(
params
));
messageFeignClient
.
delMessageBySystem
(
params
);
messageFeignClient
.
delTodoMessageBySystem
(
params
);
}
...
...
@@ -98,10 +100,16 @@ public class MsgUtil {
params
.
put
(
"systemTag"
,
EmailConstant
.
SYSTEM_TAG
);
params
.
put
(
"businessId"
,
businessId
);
params
.
put
(
"todoUserId"
,
receiverId
);
params
.
put
(
"ids"
,
SetUtils
.
newIdentityHashSet
().
add
(
receiverId
));
log
.
debug
(
"---已读消息代办: {}"
,
JSONUtil
.
toJsonStr
(
params
));
LinkedHashSet
<
Long
>
receiverIds
=
new
LinkedHashSet
<>();
receiverIds
.
add
(
receiverId
);
params
.
put
(
"ids"
,
receiverIds
);
log
.
warn
(
"---已读消息代办: {}"
,
JSONUtil
.
toJsonStr
(
params
));
messageFeignClient
.
batchSetReadByUser
(
params
,
String
.
valueOf
(
businessId
));
messageFeignClient
.
doneByBusinessIdAndSystemTagAndTodoUserId
(
params
);
// ResultVo resultVo = messageFeignClient.batchSetReadByUser(params, String.valueOf(businessId));
// ResultVo resultVo1 = messageFeignClient.doneByBusinessIdAndSystemTagAndTodoUserId(params);
// log.warn("---已读消息代办返回: {}", JSONUtil.toJsonStr(resultVo));
// log.warn("---已读消息代办返回: {}", JSONUtil.toJsonStr(resultVo1));
}
...
...
src/main/resources/logback-spring.xml
View file @
107746a6
<?xml version="1.0" encoding="UTF-8"?>
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
<!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true -->
<!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<!--<configuration scan="true" scanPeriod="10 seconds">-->
<configuration>
<contextName>
logback
</contextName>
<!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 -->
<!-- <property name="log.path" value="/opt/oa-cloud/email/logs/"/>-->
<property
name=
"log.path"
value=
"/opt/services/oa/email/logs/"
/>
<!-- <property name="log.path" value="D:/seallog/"/>-->
<!--主要日志文件名-->
<property
name=
"default_log_file"
value=
"email"
/>
<!-- 彩色日志 -->
<!-- 彩色日志依赖的渲染类 -->
<conversionRule
conversionWord=
"clr"
converterClass=
"org.springframework.boot.logging.logback.ColorConverter"
/>
<conversionRule
conversionWord=
"wex"
converterClass=
"org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"
/>
<conversionRule
conversionWord=
"wEx"
converterClass=
"org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"
/>
<!-- 彩色日志格式 -->
<property
name=
"CONSOLE_LOG_PATTERN"
value=
"${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"
/>
<!--输出到控制台-->
<appender
name=
"CONSOLE"
class=
"ch.qos.logback.core.ConsoleAppender"
>
<!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
<filter
class=
"ch.qos.logback.classic.filter.ThresholdFilter"
>
<level>
debug
</level>
</filter>
<configuration>
<!--<include resource="org/springframework/boot/logging/logback/base.xml"/>-->
<include
resource=
"org/springframework/boot/logging/logback/defaults.xml"
/>
<include
resource=
"org/springframework/boot/logging/logback/console-appender.xml"
/>
<!-- 项目名称也是主要日志文件名 -->
<property
name=
"PROJECT_NAME"
value=
"email"
/>
<!-- 日志目录 -->
<property
name=
"LOG_PATH"
value=
"/data/logs/${LOG_PATH:-${PROJECT_NAME}}"
/>
<!-- 日志格式 -->
<property
name=
"LOG_PATTERN"
value=
"%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:-} [%15.15t] %-40.40logger{39} : %m%n"
/>
<!-- the name of the application's logging context -->
<!-- by default each JMXConfigurator instance will be registered under the same name in the same JVM -->
<!-- we need to set the contextName for different apps, so that the jmxconfigurator won't collide -->
<contextName>
${PROJECT_NAME}
</contextName>
<jmxConfigurator/>
<!--主要日志配置 开始-->
<appender
name=
"SIZED_ROLLING_FILE"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<encoder>
<Pattern>
${CONSOLE_LOG_PATTERN}
</Pattern>
<!-- 设置字符集 -->
<pattern>
${LOG_PATTERN}
</pattern>
<charset>
UTF-8
</charset>
</encoder>
<file>
${LOG_PATH}/${PROJECT_NAME}.log
</file>
<rollingPolicy
class=
"ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<fileNamePattern>
${LOG_PATH}/${PROJECT_NAME}/${PROJECT_NAME}.%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class=
"ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"
>
<maxFileSize>
50MB
</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!-- 日志文档保留天数 -->
<maxHistory>
15
</maxHistory>
</rollingPolicy>
</appender>
<!-- 异步输出 -->
<appender
name=
"MAIN-LOGGER-APPENDER"
class=
"ch.qos.logback.classic.AsyncAppender"
>
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
<discardingThreshold>
0
</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>
512
</queueSize>
<!-- 添加附加的appender,最多只能添加一个 -->
<appender-ref
ref=
"SIZED_ROLLING_FILE"
/>
</appender>
<!--主要日志配置 结束-->
<!--输出到文件-->
<!-- 时间滚动输出 level为 DEBUG 日志 -->
<!--DEBUG日志配置 开始-->
<appender
name=
"DEBUG_FILE"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<!-- 正在记录的日志文件的路径及文件名 -->
<file>
${log.path}/log_debug.log
</file>
<!--日志文件输出格式-->
<encoder>
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
</pattern>
<charset>
UTF-8
</charset>
<!-- 设置字符集 -->
<pattern>
${LOG_PATTERN}
</pattern>
<charset>
UTF-8
</charset>
</encoder>
<
!-- 日志记录器的滚动策略,按日期,按大小记录 --
>
<
file>
${LOG_PATH}/debug.log
</file
>
<rollingPolicy
class=
"ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<!-- 日志归档 -->
<fileNamePattern>
${log.path}/debug/${default_log_file}-debug-%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<fileNamePattern>
${LOG_PATH}/debug/debug.%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class=
"ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"
>
<maxFileSize>
10
0MB
</maxFileSize>
<maxFileSize>
5
0MB
</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!--
日志文件保留天数
-->
<!--
日志文档保留天数
-->
<maxHistory>
15
</maxHistory>
</rollingPolicy>
<!-- 此日志文件只记录
debug
级别的 -->
<!-- 此日志文件只记录
ERROR
级别的 -->
<filter
class=
"ch.qos.logback.classic.filter.LevelFilter"
>
<level>
debug
</level>
<level>
DEBUG
</level>
<onMatch>
ACCEPT
</onMatch>
<onMismatch>
DENY
</onMismatch>
</filter>
</appender>
<!-- 异步输出 -->
<appender
name=
"DEBUG-APPENDER"
class=
"ch.qos.logback.classic.AsyncAppender"
>
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
<discardingThreshold>
0
</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>
512
</queueSize>
<!-- 添加附加的appender,最多只能添加一个 -->
<appender-ref
ref=
"DEBUG_FILE"
/>
</appender>
<!--DEBUG日志配置 结束-->
<!--
时间滚动输出 level为 INFO 日志
-->
<!--
INFO日志配置 开始
-->
<appender
name=
"INFO_FILE"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<!-- 正在记录的日志文件的路径及文件名 -->
<file>
${log.path}/log_info.log
</file>
<!--日志文件输出格式-->
<encoder>
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
</pattern>
<pattern>
${LOG_PATTERN}
</pattern>
<charset>
UTF-8
</charset>
</encoder>
<
!-- 日志记录器的滚动策略,按日期,按大小记录 --
>
<
file>
${LOG_PATH}/info.log
</file
>
<rollingPolicy
class=
"ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<!-- 每天日志归档路径以及格式 -->
<fileNamePattern>
${log.path}/info/${default_log_file}-info-%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<fileNamePattern>
${LOG_PATH}/info/info.%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class=
"ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"
>
<maxFileSize>
10
0MB
</maxFileSize>
<maxFileSize>
5
0MB
</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!--
日志文件保留天数
-->
<!--
日志文档保留天数
-->
<maxHistory>
15
</maxHistory>
</rollingPolicy>
<!-- 此日志文件只记录
info
级别的 -->
<!-- 此日志文件只记录
ERROR
级别的 -->
<filter
class=
"ch.qos.logback.classic.filter.LevelFilter"
>
<level>
info
</level>
<level>
INFO
</level>
<onMatch>
ACCEPT
</onMatch>
<onMismatch>
DENY
</onMismatch>
</filter>
</appender>
<!-- 异步输出 -->
<appender
name=
"INFO-APPENDER"
class=
"ch.qos.logback.classic.AsyncAppender"
>
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
<discardingThreshold>
0
</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>
512
</queueSize>
<!-- 添加附加的appender,最多只能添加一个 -->
<appender-ref
ref=
"INFO_FILE"
/>
</appender>
<!--INFO日志配置 结束-->
<!--
时间滚动输出 level为 WARN 日志
-->
<!--
WARN日志配置 开始
-->
<appender
name=
"WARN_FILE"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<!-- 正在记录的日志文件的路径及文件名 -->
<file>
${log.path}/log_warn.log
</file>
<!--日志文件输出格式-->
<encoder>
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
</pattern>
<charset>
UTF-8
</charset>
<!-- 此处设置字符集 -->
<pattern>
${LOG_PATTERN}
</pattern>
<charset>
UTF-8
</charset>
</encoder>
<
!-- 日志记录器的滚动策略,按日期,按大小记录 --
>
<
file>
${LOG_PATH}/warn.log
</file
>
<rollingPolicy
class=
"ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<fileNamePattern>
${
log.path}/warn/${default_log_file}-warn-
%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<fileNamePattern>
${
LOG_PATH}/warn/warn.
%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class=
"ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"
>
<maxFileSize>
10
0MB
</maxFileSize>
<maxFileSize>
5
0MB
</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!--
日志文件保留天数
-->
<!--
日志文档保留天数
-->
<maxHistory>
15
</maxHistory>
</rollingPolicy>
<!-- 此日志文件只记录
warn
级别的 -->
<!-- 此日志文件只记录
ERROR
级别的 -->
<filter
class=
"ch.qos.logback.classic.filter.LevelFilter"
>
<level>
warn
</level>
<level>
WARN
</level>
<onMatch>
ACCEPT
</onMatch>
<onMismatch>
DENY
</onMismatch>
</filter>
</appender>
<!-- 异步输出 -->
<appender
name=
"WARN-APPENDER"
class=
"ch.qos.logback.classic.AsyncAppender"
>
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
<discardingThreshold>
0
</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>
512
</queueSize>
<!-- 添加附加的appender,最多只能添加一个 -->
<appender-ref
ref=
"WARN_FILE"
/>
</appender>
<!--WARN日志配置 结束-->
<!-- 时间滚动输出 level为 ERROR 日志 -->
<!--ERROR错误日志配置 开始-->
<appender
name=
"ERROR_FILE"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<!-- 正在记录的日志文件的路径及文件名 -->
<file>
${
log.path}/log_
error.log
</file>
<file>
${
LOG_PATH}/
error.log
</file>
<!--日志文件输出格式-->
<encoder>
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
</pattern>
<pattern>
${LOG_PATTERN}
</pattern>
<charset>
UTF-8
</charset>
<!-- 此处设置字符集 -->
</encoder>
<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<rollingPolicy
class=
"ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<fileNamePattern>
${
log.path}/error/${default_log_file}-error-
%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<fileNamePattern>
${
LOG_PATH}/error/error.
%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class=
"ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"
>
<maxFileSize>
10
0MB
</maxFileSize>
<maxFileSize>
5
0MB
</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!--日志文件保留天数-->
<maxHistory>
15
</maxHistory>
...
...
@@ -149,73 +169,33 @@
<onMismatch>
DENY
</onMismatch>
</filter>
</appender>
<!-- 异步输出 -->
<appender
name=
"ERROR-APPENDER"
class=
"ch.qos.logback.classic.AsyncAppender"
>
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
<discardingThreshold>
0
</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>
512
</queueSize>
<!-- 添加附加的appender,最多只能添加一个 -->
<appender-ref
ref=
"ERROR_FILE"
/>
</appender>
<!--ERROR错误日志配置 结束-->
<!--
<logger>用来设置某一个包或者具体的某一个类的日志打印级别、
以及指定<appender>。<logger>仅有一个name属性,
一个可选的level和一个可选的addtivity属性。
name:用来指定受此logger约束的某一个包或者具体的某一个类。
level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。
如果未设置此属性,那么当前logger将会继承上级的级别。
addtivity:是否向上级logger传递打印信息。默认是true。
-->
<!--<logger name="org.springframework.web" level="info"/>-->
<!--<logger name="org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor" level="INFO"/>-->
<!--
使用mybatis的时候,sql语句是debug下才会打印,而这里我们只配置了info,所以想要查看sql语句的话,有以下两种操作:
第一种把<root level="info">改成<root level="DEBUG">这样就会打印sql,不过这样日志那边会出现很多其他消息
第二种就是单独给dao下目录配置debug模式,代码如下,这样配置sql语句会打印,其他还是正常info级别:
-->
<logger
name=
"org.springframework.boot.autoconfigure"
level=
"error"
/>
<springProfile
name=
"local"
>
<logger
name=
"com.zq"
level=
"debug"
/>
</springProfile>
<springProfile
name=
"dev"
>
<logger
name=
"com.zq"
level=
"debug"
/>
</springProfile>
<springProfile
name=
"test"
>
<logger
name=
"com.zq"
level=
"info"
/>
</springProfile>
<springProfile
name=
"product"
>
<logger
name=
"com.zq"
level=
"info"
/>
</springProfile>
<springProfile
name=
"wanpro-test"
>
<logger
name=
"com.zq"
level=
"info"
/>
</springProfile>
<springProfile
name=
"wanpro-pro"
>
<logger
name=
"com.zq"
level=
"info"
/>
</springProfile>
<!--
root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性
level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
不能设置为INHERITED或者同义词NULL。默认是DEBUG
可以包含零个或多个元素,标识这个appender将会添加到这个logger。
-->
<root
level=
"info"
>
<root
level=
"INFO"
>
<!-- 控制台日志输出 -->
<appender-ref
ref=
"CONSOLE"
/>
<appender-ref
ref=
"DEBUG_FILE"
/>
<appender-ref
ref=
"INFO_FILE"
/>
<appender-ref
ref=
"WARN_FILE"
/>
<appender-ref
ref=
"ERROR_FILE"
/>
<!-- 全部日志不区分级别 -->
<appender-ref
ref=
"MAIN-LOGGER-APPENDER"
/>
<!-- 区分日志级别 -->
<appender-ref
ref=
"DEBUG-APPENDER"
/>
<appender-ref
ref=
"INFO-APPENDER"
/>
<appender-ref
ref=
"WARN-APPENDER"
/>
<appender-ref
ref=
"ERROR-APPENDER"
/>
</root>
<logger
name=
"com.zq.message"
level=
"DEBUG"
/>
<!--生产环境:输出到文件-->
<!-- <springProfile name="product">-->
<!-- <root level="info">-->
<!-- <appender-ref ref="CONSOLE" />-->
<!-- <appender-ref ref="DEBUG_FILE" />-->
<!-- <appender-ref ref="INFO_FILE" />-->
<!-- <appender-ref ref="ERROR_FILE" />-->
<!-- <appender-ref ref="WARN_FILE" />-->
<!-- </root>-->
<!-- </springProfile>-->
<!--开发环境:打印控制台-->
<springProfile
name=
"!dev"
>
<logger
name=
"com.zq.message.mapper"
level=
"INFO"
/>
</springProfile>
</configuration>
src/main/resources/mapper/EmailPersonMapper.xml
View file @
107746a6
...
...
@@ -4,7 +4,7 @@
<select
id=
"selectSearchTotal"
resultType=
"integer"
parameterType=
"com.zq.email.vo.EmailSearchReqVo"
>
SELECT
COUNT(
EP."ID"
)
COUNT(
1
)
FROM
"EMAIL_PERSON" EP
<where>
...
...
@@ -88,7 +88,6 @@
<select
id=
"selectSearchPage"
resultType=
"com.zq.email.entity.EmailPerson"
parameterType=
"com.zq.email.vo.EmailSearchReqVo"
>
SELECT
EP1.*
FROM
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment