小编Dan*_*tte的帖子

在调用客户端时,signalr服务器端方法应该是异步的吗?

我正在关注"SignalR Tutorial": http //www.asp.net/signalr/overview/hubs-api/hubs-api-guide-server

所以让我们假设这个简单的聊天方法:

public void Send(string name, string message)
{
     // Call the addNewMessageToPage method to update clients.
     Clients.All.addNewMessageToPage(name, message);
}
Run Code Online (Sandbox Code Playgroud)

假设我有一个拥有5万用户的聊天室.将Send方法更改为异步会有什么好处,如下所示:

 public async Task Send(string name, string message)
 {
     // Call the addNewMessageToPage method to update clients.
     await Clients.All.addNewMessageToPage(name, message);
 }
Run Code Online (Sandbox Code Playgroud)
  • IIS是否会保留当前的请求(发布聊天的用户)并等到每个客户端都收到通知?
  • 对"客户端"的调用是否完全异步,请求在此时发布?

谢谢!

asynchronous asp.net-mvc-4 signalr

25
推荐指数
1
解决办法
8056
查看次数

如何使用SLF4J和Log4j2记录FATAL(或任何自定义日志级别)

我有这些具体要求:

  • 需要能够登录致命等级
  • 需要使用SLF4J
  • 需要使用Log4j2

现在,这是我的实现:

final Logger logger = LoggerFactory.getLogger(HelloWorld.class);
final Marker marker = MarkerFactory.getMarker("FATAL");
logger.error(marker, "!!! Fatal World !!!");
Run Code Online (Sandbox Code Playgroud)

这是我的PatternLayout (在yaml中):

PatternLayout:
  Pattern: "%d{ISO8601_BASIC} %-5level %marker [%t] %logger{3.} - %msg%n"
Run Code Online (Sandbox Code Playgroud)

这是我的日志输出:

20150506T155705,158 ERROR FATAL [main] - !!! Fatal World !!!
Run Code Online (Sandbox Code Playgroud)

您是否知道如何有效地从日志输出中删除"错误"?

非常感谢你

java slf4j log4j2

10
推荐指数
2
解决办法
2万
查看次数

如何将 Go 模块替换为 fork @ master 的主要版本

我无法通过使用具有 / 主要版本映射的项目的 go.mod 来通过任何固定分支映射分叉/v2

我有以下 go.mod:

go 1.18

require (
    github.com/versent/saml2aws/v2 v2.35.0
)
Run Code Online (Sandbox Code Playgroud)

请注意,该模块需要/v2,否则它将得到v2.17.0+incompatible

  1. 我在这里分叉了该项目: https: //github.com/marcottedan/saml2aws
  2. 我在这里创建了一个分支add-aad-entropy-PhoneAppNotificationhttps://github.com/marcottedan/saml2aws/tree/add-aad-entropy-PhoneAppNotification
  3. 我尝试修改或不修改我的 fork go mod 中 go.mod 的第一行从module github.com/versent/saml2aws/v2module github.com/marcottedan/saml2aws/v2

我正在使用以下指令,但没有一个有效:

2.35.0即使我要求它获取,这也会下载我的叉子的标签master

dmarcotte@dmarcottes% go get -d github.com/marcottedan/saml2aws/v2@master
go: downloading github.com/marcottedan/saml2aws/v2 v2.35.0
go: github.com/marcottedan/saml2aws/v2@v2.35.0: parsing go.mod:
        module declares its path as: github.com/versent/saml2aws/v2
                but was required as: github.com/marcottedan/saml2aws/v2
Run Code Online (Sandbox Code Playgroud)

我也尝试修改我的go.mod

replace github.com/versent/saml2aws/v2 => github.com/marcottedan/saml2aws/v2 v2.35.0

-> Can't find a …
Run Code Online (Sandbox Code Playgroud)

git fork replace go go-modules

7
推荐指数
1
解决办法
1万
查看次数

Log4j2:如何在Yaml配置中配置多个具有相同类型的Appender

我正在尝试在同一个YAML配置中使用2个RollingRandomAccessFile.我能用XML完成,但不能用YAML.结果,我想要两个文件"application.log"和"payload.log".

这是我的工作XML配置:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="debug">
    <Appenders>

        <Console name="CONSOLE" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>

        <RollingRandomAccessFile name="PAYLOAD" fileName="logs/payload.log"
                                 filePattern="logs/$${date:yyyy-MM}/payload-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout>
                <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n</pattern>
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="1 KB"/>
            </Policies>
        </RollingRandomAccessFile>

        <RollingRandomAccessFile name="APPLICATION" fileName="logs/application.log"
                                 filePattern="logs/$${date:yyyy-MM}/application-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout>
                <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n</pattern>
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="1 KB"/>
            </Policies>
        </RollingRandomAccessFile>

    </Appenders>

    <Loggers>
        <Root level="info" additivity="false">
            <appender-ref ref="CONSOLE" level="trace"/>
            <appender-ref ref="APPLICATION" level="trace"/>
            <appender-ref ref="PAYLOAD" level="trace"/>
        </Root>
    </Loggers>

</Configuration>
Run Code Online (Sandbox Code Playgroud)

这是我的非工作YAML配置.RollingRandomAccessFile的第二个声明会覆盖第一个声明,只有"application.log":

Configuration:
  status: debug

  Appenders:
    Console: …
Run Code Online (Sandbox Code Playgroud)

yaml rollingfileappender log4j2

3
推荐指数
1
解决办法
3475
查看次数

如何在 log4j2 中创建自定义 RewritePolicy?

我正在尝试在 Log4j2 中编写我自己的 RewritePolicy。该文件指出:

RewritePolicy 是一个接口,它允许实现在传递给 Appender 之前检查并可能修改 LogEvent。RewritePolicy 声明了一个必须实现的名为 rewrite 的方法。该方法通过 LogEvent 传递,可以返回相同的事件或创建一个新的事件。

这是我的java类

public final class MarkerInjectorRewritePolicy implements RewritePolicy {

    @Override
    public LogEvent rewrite(final LogEvent event) {
        final Marker marker = event.getMarker();
        if (marker == null)
            return event;

        // If there's a Marker, add it to the ThreadContextMap so the RoutingAppender can properly routes log messages
        event.getContextMap().put("_marker", marker.getName());
        return event;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的yaml 配置文件:

Rewrite:
  name: REWRITE_APPENDER
  AppenderRef:
    ref: ROUTING_APPENDER
  PropertiesRewritePolicy:
    Property: …
Run Code Online (Sandbox Code Playgroud)

java configuration logging log4j log4j2

3
推荐指数
2
解决办法
2884
查看次数