mirror of
				https://github.com/coredns/coredns.git
				synced 2025-10-30 17:53:21 -04:00 
			
		
		
		
	[plugin/log] Expand {combined} and {common} in log format (#5230)
				
					
				
			This PR tries to address the issue raised in 5223 where `{combined}`
or `{common}` in log format will not expand when `{combined}` or `{common}`
is not the only token in the format.
This PR fixes 5223.
Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
			
			
This commit is contained in:
		| @@ -53,15 +53,9 @@ func logParse(c *caddy.Controller) ([]Rule, error) { | |||||||
| 			format := DefaultLogFormat | 			format := DefaultLogFormat | ||||||
|  |  | ||||||
| 			if strings.Contains(args[len(args)-1], "{") { | 			if strings.Contains(args[len(args)-1], "{") { | ||||||
| 				switch args[len(args)-1] { |  | ||||||
| 				case "{common}": |  | ||||||
| 					format = CommonLogFormat |  | ||||||
| 				case "{combined}": |  | ||||||
| 					format = CombinedLogFormat |  | ||||||
| 				default: |  | ||||||
| 				format = args[len(args)-1] | 				format = args[len(args)-1] | ||||||
| 				} | 				format = strings.Replace(format, "{common}", CommonLogFormat, -1) | ||||||
|  | 				format = strings.Replace(format, "{combined}", CombinedLogFormat, -1) | ||||||
| 				args = args[:len(args)-1] | 				args = args[:len(args)-1] | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
|   | |||||||
| @@ -129,6 +129,26 @@ func TestLogParse(t *testing.T) { | |||||||
| 		{`log { | 		{`log { | ||||||
| 			unknown | 			unknown | ||||||
| 		}`, true, []Rule{}}, | 		}`, true, []Rule{}}, | ||||||
|  | 		{`log example.org "{combined} {/forward/upstream}"`, false, []Rule{{ | ||||||
|  | 			NameScope: "example.org.", | ||||||
|  | 			Format:    CombinedLogFormat + " {/forward/upstream}", | ||||||
|  | 			Class:     map[response.Class]struct{}{response.All: {}}, | ||||||
|  | 		}}}, | ||||||
|  | 		{`log example.org "{common} {/forward/upstream}"`, false, []Rule{{ | ||||||
|  | 			NameScope: "example.org.", | ||||||
|  | 			Format:    CommonLogFormat + " {/forward/upstream}", | ||||||
|  | 			Class:     map[response.Class]struct{}{response.All: {}}, | ||||||
|  | 		}}}, | ||||||
|  | 		{`log example.org "{when} {combined} {/forward/upstream}"`, false, []Rule{{ | ||||||
|  | 			NameScope: "example.org.", | ||||||
|  | 			Format:    "{when} " + CombinedLogFormat + " {/forward/upstream}", | ||||||
|  | 			Class:     map[response.Class]struct{}{response.All: {}}, | ||||||
|  | 		}}}, | ||||||
|  | 		{`log example.org "{when} {common} {/forward/upstream}"`, false, []Rule{{ | ||||||
|  | 			NameScope: "example.org.", | ||||||
|  | 			Format:    "{when} " + CommonLogFormat + " {/forward/upstream}", | ||||||
|  | 			Class:     map[response.Class]struct{}{response.All: {}}, | ||||||
|  | 		}}}, | ||||||
| 	} | 	} | ||||||
| 	for i, test := range tests { | 	for i, test := range tests { | ||||||
| 		c := caddy.NewTestController("dns", test.inputLogRules) | 		c := caddy.NewTestController("dns", test.inputLogRules) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user