mirror of
https://github.com/gotoeasy/glogcenter.git
synced 2025-09-15 12:58:34 +08:00
v0.15.0
This commit is contained in:
parent
c05556d41c
commit
86567c8070
@ -53,6 +53,7 @@ var enableUploadMinio bool
|
|||||||
var goMaxProcess int
|
var goMaxProcess int
|
||||||
var enableCors bool
|
var enableCors bool
|
||||||
var pageSize int
|
var pageSize int
|
||||||
|
var nearSearchSize int
|
||||||
var mulitLineSearch bool
|
var mulitLineSearch bool
|
||||||
var testMode bool
|
var testMode bool
|
||||||
var tokenSalt string
|
var tokenSalt string
|
||||||
@ -66,42 +67,48 @@ func init() {
|
|||||||
|
|
||||||
func UpdateConfigByEnv() {
|
func UpdateConfigByEnv() {
|
||||||
// 读取环境变量初始化配置,各配置都有默认值
|
// 读取环境变量初始化配置,各配置都有默认值
|
||||||
storeChanLength = cmn.GetEnvInt("GLC_STORE_CHAN_LENGTH", 64) // 【X】存储通道长度
|
storeChanLength = cmn.GetEnvInt("GLC_STORE_CHAN_LENGTH", 64) // 【X】存储通道长度
|
||||||
maxIdleTime = cmn.GetEnvInt("GLC_MAX_IDLE_TIME", 300) // 【X】最大闲置时间(秒),超过闲置时间将自动关闭,0时表示不关闭
|
maxIdleTime = cmn.GetEnvInt("GLC_MAX_IDLE_TIME", 300) // 【X】最大闲置时间(秒),超过闲置时间将自动关闭,0时表示不关闭
|
||||||
storeNameAutoAddDate = cmn.GetEnvBool("GLC_STORE_NAME_AUTO_ADD_DATE", true) // 存储名是否自动添加日期(日志量大通常按日单位区分存储),默认true
|
storeNameAutoAddDate = cmn.GetEnvBool("GLC_STORE_NAME_AUTO_ADD_DATE", true) // 存储名是否自动添加日期(日志量大通常按日单位区分存储),默认true
|
||||||
serverUrl = cmn.GetEnvStr("GLC_SERVER_URL", "") // 服务URL,默认“”,集群配置时自动获取地址可能不对,可通过这个设定
|
serverUrl = cmn.GetEnvStr("GLC_SERVER_URL", "") // 服务URL,默认“”,集群配置时自动获取地址可能不对,可通过这个设定
|
||||||
serverIp = cmn.GetEnvStr("GLC_SERVER_IP", "") // 【X】服务IP,默认“”,当“”时会自动获取
|
serverIp = cmn.GetEnvStr("GLC_SERVER_IP", "") // 【X】服务IP,默认“”,当“”时会自动获取
|
||||||
enableSecurityKey = cmn.GetEnvBool("GLC_ENABLE_SECURITY_KEY", false) // web服务是否开启API秘钥校验,默认false
|
enableSecurityKey = cmn.GetEnvBool("GLC_ENABLE_SECURITY_KEY", false) // web服务是否开启API秘钥校验,默认false
|
||||||
headerSecurityKey = cmn.GetEnvStr("GLC_HEADER_SECURITY_KEY", "X-GLC-AUTH") // web服务API秘钥的header键名
|
headerSecurityKey = cmn.GetEnvStr("GLC_HEADER_SECURITY_KEY", "X-GLC-AUTH") // web服务API秘钥的header键名
|
||||||
securityKey = cmn.GetEnvStr("GLC_SECURITY_KEY", "glogcenter") // web服务API秘钥
|
securityKey = cmn.GetEnvStr("GLC_SECURITY_KEY", "glogcenter") // web服务API秘钥
|
||||||
enableWebGzip = cmn.GetEnvBool("GLC_ENABLE_WEB_GZIP", false) // web服务是否开启Gzip
|
enableWebGzip = cmn.GetEnvBool("GLC_ENABLE_WEB_GZIP", false) // web服务是否开启Gzip
|
||||||
enableAmqpConsume = cmn.GetEnvBool("GLC_ENABLE_AMQP_CONSUME", false) // 是否开启rabbitMq消费者接收日志
|
enableAmqpConsume = cmn.GetEnvBool("GLC_ENABLE_AMQP_CONSUME", false) // 是否开启rabbitMq消费者接收日志
|
||||||
amqpAddr = cmn.GetEnvStr("GLC_AMQP_ADDR", "") // rabbitMq连接地址,例:"amqp://user:password@ip:port/"
|
amqpAddr = cmn.GetEnvStr("GLC_AMQP_ADDR", "") // rabbitMq连接地址,例:"amqp://user:password@ip:port/"
|
||||||
amqpQueueName = cmn.GetEnvStr("GLC_AMQP_QUEUE_NAME", "glc-log-queue") // rabbitMq队列名
|
amqpQueueName = cmn.GetEnvStr("GLC_AMQP_QUEUE_NAME", "glc-log-queue") // rabbitMq队列名
|
||||||
amqpJsonFormat = cmn.GetEnvBool("GLC_AMQP_JSON_FORMAT", true) // rabbitMq消息文本是否为json格式,默认true
|
amqpJsonFormat = cmn.GetEnvBool("GLC_AMQP_JSON_FORMAT", true) // rabbitMq消息文本是否为json格式,默认true
|
||||||
saveDays = cmn.GetEnvInt("GLC_SAVE_DAYS", 180) // 日志分仓时的保留天数(0~1200),0表示不自动删除,默认180天
|
saveDays = cmn.GetEnvInt("GLC_SAVE_DAYS", 180) // 日志分仓时的保留天数(0~1200),0表示不自动删除,默认180天
|
||||||
enableLogin = cmn.GetEnvBool("GLC_ENABLE_LOGIN", false) // 是否开启用户密码登录,默认“false”
|
enableLogin = cmn.GetEnvBool("GLC_ENABLE_LOGIN", false) // 是否开启用户密码登录,默认“false”
|
||||||
sessionTimeout = cmn.GetEnvInt("GLC_SESSION_TIMEOUT", 30) // 登录会话超时时间,默认“30”分钟
|
sessionTimeout = cmn.GetEnvInt("GLC_SESSION_TIMEOUT", 30) // 登录会话超时时间,默认“30”分钟
|
||||||
username = cmn.GetEnvStr("GLC_USERNAME", "glc") // 登录用户名,默认“glc”
|
username = cmn.GetEnvStr("GLC_USERNAME", "glc") // 登录用户名,默认“glc”
|
||||||
password = cmn.GetEnvStr("GLC_PASSWORD", "GLogCenter100%666") // 登录密码,默认“GLogCenter100%666”
|
password = cmn.GetEnvStr("GLC_PASSWORD", "GLogCenter100%666") // 登录密码,默认“GLogCenter100%666”
|
||||||
tokenSalt = cmn.GetEnvStr("GLC_TOKEN_SALT", "") // 令牌盐,默认“”
|
tokenSalt = cmn.GetEnvStr("GLC_TOKEN_SALT", "") // 令牌盐,默认“”
|
||||||
aryWhite = cmn.Split(cmn.GetEnvStr("GLC_WHITE_LIST", ""), ",") // IP或区域白名单,逗号分隔,默认“”
|
aryWhite = cmn.Split(cmn.GetEnvStr("GLC_WHITE_LIST", ""), ",") // IP或区域白名单,逗号分隔,默认“”
|
||||||
aryBlack = cmn.Split(cmn.GetEnvStr("GLC_BLACK_LIST", ""), ",") // IP或区域黑名单,逗号分隔,单个*代表全部,内网地址不受限制,默认“”
|
aryBlack = cmn.Split(cmn.GetEnvStr("GLC_BLACK_LIST", ""), ",") // IP或区域黑名单,逗号分隔,单个*代表全部,内网地址不受限制,默认“”
|
||||||
ipAddCity = cmn.GetEnvBool("GLC_IP_ADD_CITY", false) // IP是否要自动附加城市信息,默认false
|
ipAddCity = cmn.GetEnvBool("GLC_IP_ADD_CITY", false) // IP是否要自动附加城市信息,默认false
|
||||||
clusterMode = cmn.GetEnvBool("GLC_CLUSTER_MODE", false) // 是否开启集群模式,默认false
|
clusterMode = cmn.GetEnvBool("GLC_CLUSTER_MODE", false) // 是否开启集群模式,默认false
|
||||||
splitUrls(cmn.GetEnvStr("GLC_CLUSTER_URLS", "")) // 从服务器地址,多个时逗号分开,默认“”
|
splitUrls(cmn.GetEnvStr("GLC_CLUSTER_URLS", "")) // 从服务器地址,多个时逗号分开,默认“”
|
||||||
enableBackup = cmn.GetEnvBool("GLC_ENABLE_BACKUP", false) // 【X】是否开启备份,默认false
|
enableBackup = cmn.GetEnvBool("GLC_ENABLE_BACKUP", false) // 【X】是否开启备份,默认false
|
||||||
glcGroup = cmn.GetEnvStr("GLC_GROUP", "default") // 【X】日志中心分组名,默认“default”
|
glcGroup = cmn.GetEnvStr("GLC_GROUP", "default") // 【X】日志中心分组名,默认“default”
|
||||||
minioUrl = cmn.GetEnvStr("GLC_MINIO_URL", "") // 【X】MINIO地址,默认“”
|
minioUrl = cmn.GetEnvStr("GLC_MINIO_URL", "") // 【X】MINIO地址,默认“”
|
||||||
minioUser = cmn.GetEnvStr("GLC_MINIO_USER", "") // 【X】MINIO用户名,默认“”
|
minioUser = cmn.GetEnvStr("GLC_MINIO_USER", "") // 【X】MINIO用户名,默认“”
|
||||||
minioPassword = cmn.GetEnvStr("GLC_MINIO_PASS", "") // 【X】MINIO密码,默认“”
|
minioPassword = cmn.GetEnvStr("GLC_MINIO_PASS", "") // 【X】MINIO密码,默认“”
|
||||||
minioBucket = cmn.GetEnvStr("GLC_MINIO_BUCKET", "") // 【X】MINIO桶名,默认“”
|
minioBucket = cmn.GetEnvStr("GLC_MINIO_BUCKET", "") // 【X】MINIO桶名,默认“”
|
||||||
enableUploadMinio = cmn.GetEnvBool("GLC_ENABLE_UPLOAD_MINIO", false) // 【X】是否开启上传备份至MINIO服务器,默认false
|
enableUploadMinio = cmn.GetEnvBool("GLC_ENABLE_UPLOAD_MINIO", false) // 【X】是否开启上传备份至MINIO服务器,默认false
|
||||||
goMaxProcess = getGoMaxProcessConf(cmn.GetEnvInt("GLC_GOMAXPROCS", -1)) // 使用的最大CPU数量,默认是最大CPU数量(设定值不在实际数量范围是按最大看待)
|
goMaxProcess = getGoMaxProcessConf(cmn.GetEnvInt("GLC_GOMAXPROCS", -1)) // 使用的最大CPU数量,默认是最大CPU数量(设定值不在实际数量范围是按最大看待)
|
||||||
enableCors = cmn.GetEnvBool("GLC_ENABLE_CORS", false) // 是否允许跨域,默认false
|
enableCors = cmn.GetEnvBool("GLC_ENABLE_CORS", false) // 是否允许跨域,默认false
|
||||||
pageSize = getPageSizeConf(cmn.GetEnvInt("GLC_PAGE_SIZE", 100)) // 每次检索件数,默认100(有效范围1~1000)
|
pageSize = getPageSizeConf(cmn.GetEnvInt("GLC_PAGE_SIZE", 100)) // 每次检索件数,默认100(有效范围1~1000)
|
||||||
mulitLineSearch = cmn.GetEnvBool("GLC_SEARCH_MULIT_LINE", false) // 是否检索日志的全部行(日志可能有换行),默认false仅第一行
|
nearSearchSize = getNearSearchSizeConf(cmn.GetEnvInt("GLC_NEAR_SEARCH_SIZE", 200)) // 定位相邻检索的查询件数,默认200(有效范围50~1000)
|
||||||
testMode = cmn.GetEnvBool("GLC_TEST_MODE", false) // 是否测试模式,默认false
|
mulitLineSearch = cmn.GetEnvBool("GLC_SEARCH_MULIT_LINE", false) // 是否检索日志的全部行(日志可能有换行),默认false仅第一行
|
||||||
|
testMode = cmn.GetEnvBool("GLC_TEST_MODE", false) // 是否测试模式,默认false
|
||||||
|
}
|
||||||
|
|
||||||
|
// 取配置: 定位相邻检索的查询件数,可通过环境变量“GLC_NEAR_SEARCH_SIZE”设定,默认200件
|
||||||
|
func GetNearSearchSize() int {
|
||||||
|
return nearSearchSize
|
||||||
}
|
}
|
||||||
|
|
||||||
// 取配置: IP是否要自动附加城市信息,默认false
|
// 取配置: IP是否要自动附加城市信息,默认false
|
||||||
@ -143,6 +150,15 @@ func IsMulitLineSearch() bool {
|
|||||||
func GetPageSize() int {
|
func GetPageSize() int {
|
||||||
return pageSize
|
return pageSize
|
||||||
}
|
}
|
||||||
|
func getNearSearchSizeConf(n int) int {
|
||||||
|
if n < 50 {
|
||||||
|
n = 50
|
||||||
|
}
|
||||||
|
if n > 1000 {
|
||||||
|
n = 1000
|
||||||
|
}
|
||||||
|
return n
|
||||||
|
}
|
||||||
func getPageSizeConf(n int) int {
|
func getPageSizeConf(n int) int {
|
||||||
if n < 1 {
|
if n < 1 {
|
||||||
n = 1
|
n = 1
|
||||||
|
|||||||
@ -155,19 +155,18 @@ func (e *Engine) Search(cond *search.SearchCondition) *search.SearchResult {
|
|||||||
// 多关键词查询模式
|
// 多关键词查询模式
|
||||||
if cond.NewNearId > 0 {
|
if cond.NewNearId > 0 {
|
||||||
// 相邻检索模式的判断及条件准备
|
// 相邻检索模式的判断及条件准备
|
||||||
max := conf.GetPageSize()
|
max := conf.GetNearSearchSize()
|
||||||
leftSize := 20
|
|
||||||
cond.CurrentId = cond.NewNearId
|
cond.CurrentId = cond.NewNearId
|
||||||
isForward := cond.OldNearId < 1 || cond.NewNearId < cond.OldNearId // 是否向下检索更多的旧日志
|
isForward := cond.OldNearId < 1 || cond.NewNearId < cond.OldNearId // 是否向下检索更多的旧日志
|
||||||
|
|
||||||
// 搜索更多的新数据
|
// 搜索更多的新数据
|
||||||
// 反向检索前x条
|
// 反向检索前x条
|
||||||
cond.Forward = false
|
leftSize := 20
|
||||||
if isForward {
|
if !isForward {
|
||||||
cond.SearchSize = leftSize
|
leftSize = max - leftSize
|
||||||
} else {
|
|
||||||
cond.SearchSize = max - leftSize
|
|
||||||
}
|
}
|
||||||
|
cond.Forward = false
|
||||||
|
cond.SearchSize = leftSize
|
||||||
rs = search.SearchWordIndex(e.storeName, cond)
|
rs = search.SearchWordIndex(e.storeName, cond)
|
||||||
// 定位日志1条固定(不管是否满足检索条件)
|
// 定位日志1条固定(不管是否满足检索条件)
|
||||||
ldm := search.GetLogDataModelById(cond.NearStoreName, cond.NewNearId)
|
ldm := search.GetLogDataModelById(cond.NearStoreName, cond.NewNearId)
|
||||||
|
|||||||
@ -364,7 +364,7 @@ func findSame(cond *SearchCondition, minDocumentId uint32, maxDocumentId uint32,
|
|||||||
|
|
||||||
// 简单检查排除没结果的情景
|
// 简单检查排除没结果的情景
|
||||||
totalCount := minIdx.idxwordStorage.GetTotalCount(minIdx.word)
|
totalCount := minIdx.idxwordStorage.GetTotalCount(minIdx.word)
|
||||||
if totalCount == 0 || (totalCount == 1 && cond.CurrentId > 0) {
|
if totalCount == 0 || (cond.NewNearId == 0 && totalCount == 1 && cond.CurrentId > 0) {
|
||||||
return rs // 索引件数0、或只有1条又还要跳过,都是找不到
|
return rs // 索引件数0、或只有1条又还要跳过,都是找不到
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user