diff --git a/log/zap/core_test.go b/log/zap/core_test.go
index f78916cb9faeb197179cebbaa608735d86ceddee..51b222bdc002c6ed74bb2e81fc8c84be59f95cba 100644
--- a/log/zap/core_test.go
+++ b/log/zap/core_test.go
@@ -5,6 +5,7 @@ import (
 
 	"git.perx.ru/perxis/perxis-go/id"
 	"git.perx.ru/perxis/perxis-go/log"
+	zap2 "git.perx.ru/perxis/perxis-go/zap"
 	"github.com/stretchr/testify/require"
 	"go.uber.org/zap"
 	"go.uber.org/zap/zapcore"
@@ -30,13 +31,13 @@ func TestCore_getEntry(t *testing.T) {
 				entry: zapcore.Entry{Level: zapcore.InfoLevel, Message: "создан элемент коллекции"},
 				fields: []zapcore.Field{
 					zap.String("key", "val"), // будет проигнорировано
-					Category("create"),
-					Component("Items.Service"),
-					Event("Items.Create"),
-					Object("/spaces/WPNN/envs/9VGP/cols/GxNv/items/W0fl"),
-					Caller("/users/PHVz"),
-					Attr("any"),
-					Tags("tag1", "tag2", "tag3"),
+					zap2.Category("create"),
+					zap2.Component("Items.Service"),
+					zap2.Event("Items.Create"),
+					zap2.Object("/spaces/WPNN/envs/9VGP/cols/GxNv/items/W0fl"),
+					zap2.Caller("/users/PHVz"),
+					zap2.Attr("any"),
+					zap2.Tags("tag1", "tag2", "tag3"),
 				},
 			},
 			want: &log.Entry{
diff --git a/log/zap/example_test.go b/log/zap/example_test.go
index d99b83c23b4ae05eaa091d2c8e96e1820b90d6fb..ee51ef0345b01a88993e30c24a38f7e89bbe5929 100644
--- a/log/zap/example_test.go
+++ b/log/zap/example_test.go
@@ -13,6 +13,7 @@ import (
 	"git.perx.ru/perxis/perxis-go/pkg/items"
 	"git.perx.ru/perxis/perxis-go/pkg/users"
 	usersmocks "git.perx.ru/perxis/perxis-go/pkg/users/mocks"
+	zap2 "git.perx.ru/perxis/perxis-go/zap"
 	"github.com/stretchr/testify/mock"
 	"github.com/stretchr/testify/require"
 	"go.uber.org/zap"
@@ -69,23 +70,23 @@ func TestExample(t *testing.T) {
 
 	// Пример отправки логов для сервиса Items
 	{
-		logger := logger.With(Component("Items"))
+		logger := logger.With(zap2.Component("Items"))
 		ctx := auth.WithPrincipal(context.Background(), factory.User("74d90aaf"))
 
 		// Отправка лога при создании item
 		logger.Info("Successfully created",
-			Event(items.EventCreateItem),
-			Object(item),
-			CallerFromContext(ctx),
-			Tags("tag1", "tag2", "tag3"),
+			zap2.Event(items.EventCreateItem),
+			zap2.Object(item),
+			zap2.CallerFromContext(ctx),
+			zap2.Tags("tag1", "tag2", "tag3"),
 		)
 
 		// Отправка лога при обновлении item
 		logger.Warn("Successfully updated",
-			Event(items.EventUpdateItem),
-			Object(item),
-			CallerFromContext(ctx),
-			Attr(map[string]map[string]any{"title": {"old": "old title", "new": "new title"}}),
+			zap2.Event(items.EventUpdateItem),
+			zap2.Object(item),
+			zap2.CallerFromContext(ctx),
+			zap2.Attr(map[string]map[string]any{"title": {"old": "old title", "new": "new title"}}),
 		)
 	}
 
diff --git a/log/zap/channel_core.go b/zap/channels.go
similarity index 97%
rename from log/zap/channel_core.go
rename to zap/channels.go
index 4eda68780e6460cb20201f07dfde4e2f222d9d2e..c67d275541c28739dd45b04d8c643534e39dba16 100644
--- a/log/zap/channel_core.go
+++ b/zap/channels.go
@@ -31,7 +31,7 @@ func NewDefaultChannelCore(core zapcore.Core, channel string) zapcore.Core {
 		core,
 		Or(
 			HasChannel(channel),
-			Not(HasKey(channelKey)),
+			Not(ContainsKey(channelKey)),
 		),
 	)
 }
diff --git a/log/zap/channel_core_test.go b/zap/channels_test.go
similarity index 100%
rename from log/zap/channel_core_test.go
rename to zap/channels_test.go
diff --git a/log/zap/field.go b/zap/field.go
similarity index 100%
rename from log/zap/field.go
rename to zap/field.go
diff --git a/log/zap/field_test.go b/zap/field_test.go
similarity index 100%
rename from log/zap/field_test.go
rename to zap/field_test.go
diff --git a/log/zap/filter_core.go b/zap/filter_core.go
similarity index 90%
rename from log/zap/filter_core.go
rename to zap/filter_core.go
index f60ba37d7c95b153858e8f2f2c95a3ee68e5f829..16888f583892b05bd379d5868ea5f58c6dbf4628 100644
--- a/log/zap/filter_core.go
+++ b/zap/filter_core.go
@@ -7,7 +7,7 @@ import (
 
 type FilterFunc func(entry zapcore.Entry, fields []zapcore.Field) bool
 
-func HasField(field zapcore.Field) FilterFunc {
+func ContainsField(field zapcore.Field) FilterFunc {
 	return func(_ zapcore.Entry, fields []zapcore.Field) bool {
 		for _, f := range fields {
 			if f.Equals(field) {
@@ -18,13 +18,7 @@ func HasField(field zapcore.Field) FilterFunc {
 	}
 }
 
-func NotHasField(field zapcore.Field) FilterFunc {
-	return func(entry zapcore.Entry, fields []zapcore.Field) bool {
-		return !HasField(field)(entry, fields)
-	}
-}
-
-func HasKey(key string) FilterFunc {
+func ContainsKey(key string) FilterFunc {
 	return func(entry zapcore.Entry, fields []zapcore.Field) bool {
 		for _, f := range fields {
 			if f.Key == key {
@@ -70,7 +64,7 @@ type filterCore struct {
 //
 //	l, _ := zap.NewDevelopment()
 //	core := l.Core().With([]zapcore.Field{zap.Int("a", 5)})
-//	core = RegisterFilters(core, HasField(zap.Int("a", 5)))
+//	core = RegisterFilters(core, ContainsField(zap.Int("a", 5)))
 //
 //	logger := zap.New(core)
 //	logger.Info("Test log") // НЕ будет записан
diff --git a/log/zap/filter_core_test.go b/zap/filter_core_test.go
similarity index 94%
rename from log/zap/filter_core_test.go
rename to zap/filter_core_test.go
index 2cf2cf01561ce7ee84a99ed3a420bc6a71026275..cb38f41cd2f0c5bab0aabea75112d9f1a57fd109 100644
--- a/log/zap/filter_core_test.go
+++ b/zap/filter_core_test.go
@@ -11,7 +11,7 @@ import (
 
 func TestFilterCore_Write(t *testing.T) {
 	core, logs := observer.New(zapcore.InfoLevel)
-	core = RegisterFilters(core, HasField(zap.Bool("check", true)))
+	core = RegisterFilters(core, ContainsField(zap.Bool("check", true)))
 
 	err := core.With([]zapcore.Field{zap.Bool("check", true)}).Write(zapcore.Entry{Message: "msg"}, nil)
 	require.NoError(t, err)