src/bosh-softlayer-cpi/logger/logger.go
func (l *logger) ChangeRetryStrategyLogTag(retryStrategy *boshretry.RetryStrategy) error {
	defer func() {
		if err := recover(); err != nil {
			l.Warn("cpiLogger", fmt.Sprintf("Recovered from panic when ChangeRetryStrategyLogTag: %s", err))
		}
	}()

	//retryStrategy only refer interface RetryStrategy, so add '*' to get private timeoutRetryStrategy
	pointerVal := reflect.ValueOf(*retryStrategy)
	val := reflect.Indirect(pointerVal)

	logtag := val.FieldByName("logTag")
	// Overwrite unexported bosh-utils/retrystrategy/timeoutRetryStrategy.logger to distinguish logs
	// #nosec G103
	ptrToLogTag := unsafe.Pointer(logtag.UnsafeAddr())
	realPtrToLogTag := (*string)(ptrToLogTag)
	serialTagPrefix := fmt.Sprintf("%s:%s", l.GetSerialTagPrefix(), logtag)
	*realPtrToLogTag = serialTagPrefix

	return nil
}
func (l *logger) ChangeRetryStrategyLogTag(retryStrategy *boshretry.RetryStrategy) error {
	defer func() {
		if err := recover(); err != nil {
			l.Warn("cpiLogger", fmt.Sprintf("Recovered from panic when ChangeRetryStrategyLogTag: %s", err))
		}
	}()

	//retryStrategy only refer interface RetryStrategy, so add '*' to get private timeoutRetryStrategy
	pointerVal := reflect.ValueOf(*retryStrategy)
	val := reflect.Indirect(pointerVal)

	logtag := val.FieldByName("logTag")
	// Overwrite unexported bosh-utils/retrystrategy/timeoutRetryStrategy.logger to distinguish logs
	// #nosec G103
	ptrToLogTag := unsafe.Pointer(logtag.UnsafeAddr())
	realPtrToLogTag := (*string)(ptrToLogTag)
	serialTagPrefix := fmt.Sprintf("%s:%s", l.GetSerialTagPrefix(), logtag)
	*realPtrToLogTag = serialTagPrefix

	return nil
}
func ( l * logger ) ChangeRetryStrategyLogTag ( retryStrategy * boshretry . RetryStrategy ) error { defer func ( ) { if err := recover ( ) ; err != nil { l . Warn ( " " , fmt . Sprintf ( " " , err ) ) } } ( ) //retryStrategy only refer interface RetryStrategy, so add '*' to get private timeoutRetryStrategy pointerVal := reflect . ValueOf ( * retryStrategy ) val := reflect . Indirect ( pointerVal ) logtag := val . FieldByName ( " " ) // Overwrite unexported bosh-utils/retrystrategy/timeoutRetryStrategy.logger to distinguish logs // #nosec G103 ptrToLogTag := unsafe . Pointer ( logtag . UnsafeAddr ( ) ) realPtrToLogTag := ( * string ) ( ptrToLogTag ) serialTagPrefix := fmt . Sprintf ( " " , l . GetSerialTagPrefix ( ) , logtag ) * realPtrToLogTag = serialTagPrefix return nil }
// it's unfriendly to change RetryStrategy().logtag
it s unfriendly to change RetryStrategy () . logtag