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